Przeglądaj źródła

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

AntonLV 8 lat temu
rodzic
commit
38a91966ea
100 zmienionych plików z 7010 dodań i 402 usunięć
  1. 1 1
      inc/classes/BxDolFavorite.php
  2. 1 1
      inc/classes/BxDolFeature.php
  3. 11 11
      inc/classes/BxDolStorage.php
  4. 335 335
      install/sql/system.sql
  5. 3 3
      modules/boonex/accounts/install/sql/enable.sql
  6. 1 1
      modules/boonex/acl/install/sql/enable.sql
  7. 2 2
      modules/boonex/acl/install/sql/install.sql
  8. 13 13
      modules/boonex/albums/install/sql/enable.sql
  9. 1 1
      modules/boonex/antispam/classes/BxAntispamStudioPage.php
  10. 1 1
      modules/boonex/antispam/install/sql/enable.sql
  11. 21 0
      modules/boonex/channels/classes/BxCnlAlertsResponse.php
  12. 203 0
      modules/boonex/channels/classes/BxCnlConfig.php
  13. 32 0
      modules/boonex/channels/classes/BxCnlDb.php
  14. 24 0
      modules/boonex/channels/classes/BxCnlFormEntry.php
  15. 23 0
      modules/boonex/channels/classes/BxCnlFormsEntryHelper.php
  16. 21 0
      modules/boonex/channels/classes/BxCnlGridAdministration.php
  17. 21 0
      modules/boonex/channels/classes/BxCnlGridConnections.php
  18. 24 0
      modules/boonex/channels/classes/BxCnlMenu.php
  19. 25 0
      modules/boonex/channels/classes/BxCnlMenuManageTools.php
  20. 25 0
      modules/boonex/channels/classes/BxCnlMenuSnippetMeta.php
  21. 25 0
      modules/boonex/channels/classes/BxCnlMenuView.php
  22. 47 0
      modules/boonex/channels/classes/BxCnlModule.php
  23. 24 0
      modules/boonex/channels/classes/BxCnlPageBrowse.php
  24. 24 0
      modules/boonex/channels/classes/BxCnlPageEntry.php
  25. 24 0
      modules/boonex/channels/classes/BxCnlPageJoinedEntries.php
  26. 22 0
      modules/boonex/channels/classes/BxCnlPrivacy.php
  27. 21 0
      modules/boonex/channels/classes/BxCnlPrivacyNotifications.php
  28. 209 0
      modules/boonex/channels/classes/BxCnlSearchResult.php
  29. 55 0
      modules/boonex/channels/classes/BxCnlTemplate.php
  30. 21 0
      modules/boonex/channels/classes/BxCnlUploaderCoverCrop.php
  31. 21 0
      modules/boonex/channels/classes/BxCnlUploaderPictureCrop.php
  32. 150 0
      modules/boonex/channels/install/config.php
  33. 20 0
      modules/boonex/channels/install/installer.php
  34. 306 0
      modules/boonex/channels/install/langs/en.xml
  35. 83 0
      modules/boonex/channels/install/sql/disable.sql
  36. 499 0
      modules/boonex/channels/install/sql/enable.sql
  37. 303 0
      modules/boonex/channels/install/sql/install.sql
  38. 44 0
      modules/boonex/channels/install/sql/uninstall.sql
  39. 62 0
      modules/boonex/channels/js/manage_tools.js
  40. 18 0
      modules/boonex/channels/request.php
  41. 1 0
      modules/boonex/channels/template/account_link.html
  42. 1 0
      modules/boonex/channels/template/cover.html
  43. 1 0
      modules/boonex/channels/template/css/forms.css
  44. 1 0
      modules/boonex/channels/template/css/main.css
  45. 1 0
      modules/boonex/channels/template/css/manage_tools.css
  46. 1 0
      modules/boonex/channels/template/entry-childs.html
  47. 1 0
      modules/boonex/channels/template/entry-parent.html
  48. 3 0
      modules/boonex/channels/template/entry-share.html
  49. 1 0
      modules/boonex/channels/template/entry-text.html
  50. 1 0
      modules/boonex/channels/template/form_ghost_template.html
  51. 1 0
      modules/boonex/channels/template/image_popup.html
  52. 25 0
      modules/boonex/channels/template/images/icons/std-icon.svg
  53. BIN
      modules/boonex/channels/template/images/no-pciture-big.png
  54. BIN
      modules/boonex/channels/template/images/no-picture-icon.png
  55. BIN
      modules/boonex/channels/template/images/no-picture-preview.png
  56. BIN
      modules/boonex/channels/template/images/no-picture-thumb.png
  57. 1 0
      modules/boonex/channels/template/name_link.html
  58. 1 0
      modules/boonex/channels/template/picture_preview.html
  59. 1 0
      modules/boonex/channels/template/search_extended_results.html
  60. 1 0
      modules/boonex/channels/template/set_acl_popup.html
  61. 1 0
      modules/boonex/channels/template/unit.html
  62. 1 0
      modules/boonex/channels/template/unit_live_search.html
  63. 1 0
      modules/boonex/channels/template/unit_meta_item.html
  64. 1 0
      modules/boonex/channels/template/unit_with_cover_showcase.html
  65. 1 0
      modules/boonex/channels/template/unit_wo_info.html
  66. 1 0
      modules/boonex/channels/template/uploader_form_crop_cover.html
  67. 2 2
      modules/boonex/chat_plus/install/sql/enable.sql
  68. 1 1
      modules/boonex/convos/install/sql/enable.sql
  69. 1 1
      modules/boonex/developer/classes/BxDevPolyglotManage.php
  70. 10 10
      modules/boonex/developer/install/sql/install.sql
  71. 1 1
      modules/boonex/dolphin_connect/install/sql/enable.sql
  72. 1 1
      modules/boonex/dolphin_migration/classes/BxDolMStudioPage.php
  73. 4 4
      modules/boonex/events/install/sql/enable.sql
  74. 1 1
      modules/boonex/files/classes/BxFilesModule.php
  75. 1 1
      modules/boonex/files/classes/BxFilesTemplate.php
  76. 11 11
      modules/boonex/files/install/sql/enable.sql
  77. 22 0
      modules/boonex/fontawesome/classes/BxFontAwesomeAlerts.php
  78. 20 0
      modules/boonex/fontawesome/classes/BxFontAwesomeConfig.php
  79. 26 0
      modules/boonex/fontawesome/classes/BxFontAwesomeDb.php
  80. 26 0
      modules/boonex/fontawesome/classes/BxFontAwesomeModule.php
  81. 20 0
      modules/boonex/fontawesome/classes/BxFontAwesomeTemplate.php
  82. 68 0
      modules/boonex/fontawesome/install/config.php
  83. 20 0
      modules/boonex/fontawesome/install/installer.php
  84. 8 0
      modules/boonex/fontawesome/install/langs/en.xml
  85. 18 0
      modules/boonex/fontawesome/install/sql/disable.sql
  86. 34 0
      modules/boonex/fontawesome/install/sql/enable.sql
  87. 15 0
      modules/boonex/fontawesome/install/sql/install.sql
  88. 7 0
      modules/boonex/fontawesome/install/sql/uninstall.sql
  89. 20 0
      modules/boonex/fontawesome/request.php
  90. 55 0
      modules/boonex/fontawesome/template/css/fonts-all.css
  91. 16 0
      modules/boonex/fontawesome/template/css/fonts-light.css
  92. 3712 0
      modules/boonex/fontawesome/template/css/icons.css
  93. BIN
      modules/boonex/fontawesome/template/fonts/fa-brands-400.eot
  94. 29 0
      modules/boonex/fontawesome/template/fonts/fa-brands-400.svg
  95. BIN
      modules/boonex/fontawesome/template/fonts/fa-brands-400.ttf
  96. BIN
      modules/boonex/fontawesome/template/fonts/fa-brands-400.woff
  97. BIN
      modules/boonex/fontawesome/template/fonts/fa-brands-400.woff2
  98. BIN
      modules/boonex/fontawesome/template/fonts/fa-light-300.eot
  99. 47 0
      modules/boonex/fontawesome/template/fonts/fa-light-300.svg
  100. BIN
      modules/boonex/fontawesome/template/fonts/fa-light-300.ttf

+ 1 - 1
inc/classes/BxDolFavorite.php

@@ -233,7 +233,7 @@ class BxDolFavorite extends BxDolObject
 
     protected function _getIconDoFavorite($bPerformed)
     {
-    	return $bPerformed && $this->isUndo() ?  'heart-o' : 'heart';
+    	return $bPerformed && $this->isUndo() ?  'far heart' : 'heart';
     }
 
     protected function _getTitleDoFavorite($bPerformed)

+ 1 - 1
inc/classes/BxDolFeature.php

@@ -180,7 +180,7 @@ class BxDolFeature extends BxDolObject
 
     protected function _getIconDoFeature($bPerformed)
     {
-    	return $bPerformed && $this->isUndo() ? 'star-o' : 'star';
+    	return $bPerformed && $this->isUndo() ? 'far star' : 'star';
     }
 
     protected function _getTitleDoFeature($bPerformed)

+ 11 - 11
inc/classes/BxDolStorage.php

@@ -54,7 +54,7 @@ define('BX_DOL_STORAGE_ERR_ENGINE_GET', 5004); ///< some other error during file
 define('BX_DOL_STORAGE_DEFAULT_MIME_TYPE', 'octet/stream'); ///< default mime type if it is not find by extension
 
 define('BX_DOL_STORAGE_DEFAULT_ICON', 'mime-type-any.png'); ///< default icon if no other icon can be determined by file extension
-define('BX_DOL_STORAGE_DEFAULT_ICON_FONT', 'file-o'); ///< default font icon if no other icon can be determined by file extension
+define('BX_DOL_STORAGE_DEFAULT_ICON_FONT', 'far file'); ///< default font icon if no other icon can be determined by file extension
 
 define('BX_DOL_STORAGE_QUEUED_DELETIONS_PER_RUN', 200); ///< max number of file deletions per one cron run, @see BxDolStorage::pruneDeletions
 
@@ -854,16 +854,16 @@ abstract class BxDolStorage extends BxDolFactory implements iBxDolFactoryObject
         */
 
         $aIconsFont = array (
-            'file-pdf-o' => array('pdf'),
-            'file-word-o' => array('doc', 'docx'),
-            'file-excel-o' => array('xls', 'xlt', 'xlsx', 'sxc', 'stc', 'ods', 'ots', 'sdc', 'csv', 'dif', 'slk', 'pxl'),
-            'file-powerpoint-o' => array('ppt', 'pptx', 'sxi', 'sti', 'odp', 'sdp', 'sdd'),
-            'file-code-o' => array('1st', 'aspx', 'asp', 'json', 'js', 'jsp', 'java', 'php', 'xml', 'html', 'xhtml', 'htm', 'rdf', 'xsd', 'xsl', 'xslt', 'sax', 'rss', 'dtd', 'cfm', 'js', 'asm', 'pl', 'prl', 'bas', 'b', 'fs', 'src', 'cs', 'ws', 'cgi', 'bat', 'py', 'c', 'cpp', 'cc', 'cp', 'h', 'hh', 'cxx', 'hxx', 'c++', 'm', 'lua', 'swift', 'sh', 'as', 'cob', 'tpl', 'lsp', 'x', 'cmd', 'rb', 'cbl', 'pas', 'pp', 'vb', 'vbs', 'f', 'perl', 'jl', 'lol', 'bal', 'pli', 'css', 'less', 'sass', 'saas', 'scss', 'bcc', 'coffee', 'jade', 'j', 'tea', 'c#', 'sas', 'diff', 'pro', 'for', 'sh', 'bsh', 'bash', 'twig', 'csh', 'lisp', 'lsp', 'cobol', 'pl', 'd', 'git', 'rb', 'hrl', 'cr', 'inp', 'a', 'go', 'as3', 'm', 'sql', 'md', 'mbox', 'nginx', 'pgp', 'asc', 'sig', 'ps1', 'rq', 'ttl', 'vue', 'xquery', 'xq'),
-            'file-image-o' => 'image/', 
-            'file-video-o' => 'video/',
-            'file-audio-o' => 'audio/',
-            'file-text-o' => 'text/',
-            'file-archive-o' => array('7z', '7zip', 'aar', 'ace', 'alz', 'arj', 'bz2', 'bza', 'bzip2', 'bzp', 'bzp2', 'cab', 'czip', 'gnutar', 'gz', 'gza', 'gzi', 'gzip', 'ha', 'lhz', 'lzma', 'pzip', 'rar', 'roo', 's7z', 'tar', 'tar-gz', 'tar-lzma', 'tar-z', 'taz', 'tbz', 'tbz2', 'tgz', 'tz', 'z', 'zip', 'zipx', 'zix', 'zoo'),
+            'far file-pdf' => array('pdf'),
+            'far file-word' => array('doc', 'docx'),
+            'far file-excel' => array('xls', 'xlt', 'xlsx', 'sxc', 'stc', 'ods', 'ots', 'sdc', 'csv', 'dif', 'slk', 'pxl'),
+            'far file-powerpoint' => array('ppt', 'pptx', 'sxi', 'sti', 'odp', 'sdp', 'sdd'),
+            'far file-code' => array('1st', 'aspx', 'asp', 'json', 'js', 'jsp', 'java', 'php', 'xml', 'html', 'xhtml', 'htm', 'rdf', 'xsd', 'xsl', 'xslt', 'sax', 'rss', 'dtd', 'cfm', 'js', 'asm', 'pl', 'prl', 'bas', 'b', 'fs', 'src', 'cs', 'ws', 'cgi', 'bat', 'py', 'c', 'cpp', 'cc', 'cp', 'h', 'hh', 'cxx', 'hxx', 'c++', 'm', 'lua', 'swift', 'sh', 'as', 'cob', 'tpl', 'lsp', 'x', 'cmd', 'rb', 'cbl', 'pas', 'pp', 'vb', 'vbs', 'f', 'perl', 'jl', 'lol', 'bal', 'pli', 'css', 'less', 'sass', 'saas', 'scss', 'bcc', 'coffee', 'jade', 'j', 'tea', 'c#', 'sas', 'diff', 'pro', 'for', 'sh', 'bsh', 'bash', 'twig', 'csh', 'lisp', 'lsp', 'cobol', 'pl', 'd', 'git', 'rb', 'hrl', 'cr', 'inp', 'a', 'go', 'as3', 'm', 'sql', 'md', 'mbox', 'nginx', 'pgp', 'asc', 'sig', 'ps1', 'rq', 'ttl', 'vue', 'xquery', 'xq'),
+            'far file-image' => 'image/', 
+            'far file-video' => 'video/',
+            'far file-audio' => 'audio/',
+            'far file-alt' => 'text/',
+            'far file-archive' => array('7z', '7zip', 'aar', 'ace', 'alz', 'arj', 'bz2', 'bza', 'bzip2', 'bzp', 'bzp2', 'cab', 'czip', 'gnutar', 'gz', 'gza', 'gzi', 'gzip', 'ha', 'lhz', 'lzma', 'pzip', 'rar', 'roo', 's7z', 'tar', 'tar-gz', 'tar-lzma', 'tar-z', 'taz', 'tbz', 'tbz2', 'tgz', 'tz', 'z', 'zip', 'zipx', 'zix', 'zoo'),
         );
         
         $aIcons = array (

+ 335 - 335
install/sql/system.sql

@@ -1771,8 +1771,8 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('jar', 'application/java-archive', '', ''),
 ('ser', 'application/java-serialized-object', '', ''),
 ('class', 'application/java-vm', '', ''),
-('js', 'application/javascript', '', 'file-code-o'),
-('json', 'application/json', '', 'file-code-o'),
+('js', 'application/javascript', '', 'far file-code'),
+('json', 'application/json', '', 'far file-code'),
 ('jsonml', 'application/jsonml+json', '', ''),
 ('lostxml', 'application/lost+xml', '', ''),
 ('hqx', 'application/mac-binhex40', '', ''),
@@ -1784,7 +1784,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('nb', 'application/mathematica', '', ''),
 ('mb', 'application/mathematica', '', ''),
 ('mathml', 'application/mathml+xml', '', ''),
-('mbox', 'application/mbox', '', 'file-code-o'),
+('mbox', 'application/mbox', '', 'far file-code'),
 ('mscml', 'application/mediaservercontrol+xml', '', ''),
 ('metalink', 'application/metalink+xml', '', ''),
 ('meta4', 'application/metalink4+xml', '', ''),
@@ -1793,7 +1793,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('m21', 'application/mp21', '', ''),
 ('mp21', 'application/mp21', '', ''),
 ('mp4s', 'application/mp4', '', ''),
-('doc', 'application/msword', 'mime-type-document.png', 'file-word-o'),
+('doc', 'application/msword', 'mime-type-document.png', 'far file-word'),
 ('dot', 'application/msword', '', ''),
 ('mxf', 'application/mxf', '', ''),
 ('bin', 'application/octet-stream', '', ''),
@@ -1819,10 +1819,10 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('onepkg', 'application/onenote', '', ''),
 ('oxps', 'application/oxps', '', ''),
 ('xer', 'application/patch-ops-error+xml', '', ''),
-('pdf', 'application/pdf', 'mime-type-document.png', 'file-pdf-o'),
-('pgp', 'application/pgp-encrypted', '', 'file-code-o'),
-('asc', 'application/pgp-signature', '', 'file-code-o'),
-('sig', 'application/pgp-signature', '', 'file-code-o'),
+('pdf', 'application/pdf', 'mime-type-document.png', 'far file-pdf'),
+('pgp', 'application/pgp-encrypted', '', 'far file-code'),
+('asc', 'application/pgp-signature', '', 'far file-code'),
+('sig', 'application/pgp-signature', '', 'far file-code'),
 ('prf', 'application/pics-rules', '', ''),
 ('p10', 'application/pkcs10', 'mime-type-vector.png', ''),
 ('p7m', 'application/pkcs7-mime', '', ''),
@@ -1840,7 +1840,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('ps', 'application/postscript', 'mime-type-vector.png', ''),
 ('cww', 'application/prs.cww', '', ''),
 ('pskcxml', 'application/pskc+xml', '', ''),
-('rdf', 'application/rdf+xml', '', 'file-code-o'),
+('rdf', 'application/rdf+xml', '', 'far file-code'),
 ('rif', 'application/reginfo+xml', '', ''),
 ('rnc', 'application/relax-ng-compact-syntax', '', ''),
 ('rl', 'application/resource-lists+xml', '', ''),
@@ -1850,20 +1850,20 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('mft', 'application/rpki-manifest', '', ''),
 ('roa', 'application/rpki-roa', '', ''),
 ('rsd', 'application/rsd+xml', '', ''),
-('rss', 'application/rss+xml', '', 'file-code-o'),
+('rss', 'application/rss+xml', '', 'far file-code'),
 ('rtf', 'application/rtf', 'mime-type-document.png', ''),
 ('sbml', 'application/sbml+xml', '', ''),
 ('scq', 'application/scvp-cv-request', '', ''),
 ('scs', 'application/scvp-cv-response', '', ''),
 ('spq', 'application/scvp-vp-request', '', ''),
 ('spp', 'application/scvp-vp-response', '', ''),
-('sdp', 'application/sdp', 'mime-type-presentation.png', 'file-powerpoint-o'),
+('sdp', 'application/sdp', 'mime-type-presentation.png', 'far file-powerpoint'),
 ('setpay', 'application/set-payment-initiation', '', ''),
 ('setreg', 'application/set-registration-initiation', '', ''),
 ('shf', 'application/shf+xml', '', ''),
 ('smi', 'application/smil+xml', '', ''),
 ('smil', 'application/smil+xml', '', ''),
-('rq', 'application/sparql-query', '', 'file-code-o'),
+('rq', 'application/sparql-query', '', 'far file-code'),
 ('srx', 'application/sparql-results+xml', '', ''),
 ('gram', 'application/srgs', '', ''),
 ('grxml', 'application/srgs+xml', '', ''),
@@ -2006,7 +2006,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('gim', 'application/vnd.groove-identity-message', '', ''),
 ('grv', 'application/vnd.groove-injector', '', ''),
 ('gtm', 'application/vnd.groove-tool-message', '', ''),
-('tpl', 'application/vnd.groove-tool-template', '', 'file-code-o'),
+('tpl', 'application/vnd.groove-tool-template', '', 'far file-code'),
 ('vcg', 'application/vnd.groove-vcard', '', ''),
 ('hal', 'application/vnd.hal+xml', '', ''),
 ('zmm', 'application/vnd.handheld-entertainment+xml', '', ''),
@@ -2095,12 +2095,12 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('mpc', 'application/vnd.mophun.certificate', '', ''),
 ('xul', 'application/vnd.mozilla.xul+xml', '', ''),
 ('cil', 'application/vnd.ms-artgalry', 'mime-type-vector.png', ''),
-('cab', 'application/vnd.ms-cab-compressed', 'mime-type-archive.png', 'file-archive-o'),
-('xls', 'application/vnd.ms-excel', 'mime-type-spreadsheet.png', 'file-excel-o'),
+('taxi', 'application/vnd.ms-cab-compressed', 'mime-type-archive.png', 'far file-archive'),
+('xls', 'application/vnd.ms-excel', 'mime-type-spreadsheet.png', 'far file-excel'),
 ('xlm', 'application/vnd.ms-excel', '', ''),
 ('xla', 'application/vnd.ms-excel', '', ''),
 ('xlc', 'application/vnd.ms-excel', '', ''),
-('xlt', 'application/vnd.ms-excel', 'mime-type-spreadsheet.png', 'file-excel-o'),
+('xlt', 'application/vnd.ms-excel', 'mime-type-spreadsheet.png', 'far file-excel'),
 ('xlw', 'application/vnd.ms-excel', '', ''),
 ('xlam', 'application/vnd.ms-excel.addin.macroenabled.12', '', ''),
 ('xlsb', 'application/vnd.ms-excel.sheet.binary.macroenabled.12', '', ''),
@@ -2113,7 +2113,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('thmx', 'application/vnd.ms-officetheme', '', ''),
 ('cat', 'application/vnd.ms-pki.seccat', '', ''),
 ('stl', 'application/vnd.ms-pki.stl', '', ''),
-('ppt', 'application/vnd.ms-powerpoint', 'mime-type-presentation.png', 'file-powerpoint-o'),
+('ppt', 'application/vnd.ms-powerpoint', 'mime-type-presentation.png', 'far file-powerpoint'),
 ('pps', 'application/vnd.ms-powerpoint', '', ''),
 ('pot', 'application/vnd.ms-powerpoint', '', ''),
 ('ppam', 'application/vnd.ms-powerpoint.addin.macroenabled.12', '', ''),
@@ -2158,10 +2158,10 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('otg', 'application/vnd.oasis.opendocument.graphics-template', '', ''),
 ('odi', 'application/vnd.oasis.opendocument.image', '', ''),
 ('oti', 'application/vnd.oasis.opendocument.image-template', '', ''),
-('odp', 'application/vnd.oasis.opendocument.presentation', 'mime-type-presentation.png', 'file-powerpoint-o'),
+('odp', 'application/vnd.oasis.opendocument.presentation', 'mime-type-presentation.png', 'far file-powerpoint'),
 ('otp', 'application/vnd.oasis.opendocument.presentation-template', '', ''),
-('ods', 'application/vnd.oasis.opendocument.spreadsheet', 'mime-type-spreadsheet.png', 'file-excel-o'),
-('ots', 'application/vnd.oasis.opendocument.spreadsheet-template', 'mime-type-spreadsheet.png', 'file-excel-o'),
+('ods', 'application/vnd.oasis.opendocument.spreadsheet', 'mime-type-spreadsheet.png', 'far file-excel'),
+('ots', 'application/vnd.oasis.opendocument.spreadsheet-template', 'mime-type-spreadsheet.png', 'far file-excel'),
 ('odt', 'application/vnd.oasis.opendocument.text', 'mime-type-document.png', ''),
 ('odm', 'application/vnd.oasis.opendocument.text-master', '', ''),
 ('ott', 'application/vnd.oasis.opendocument.text-template', 'mime-type-document.png', ''),
@@ -2169,13 +2169,13 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('xo', 'application/vnd.olpc-sugar', '', ''),
 ('dd2', 'application/vnd.oma.dd2+xml', '', ''),
 ('oxt', 'application/vnd.openofficeorg.extension', '', ''),
-('pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'mime-type-presentation.png', 'file-powerpoint-o'),
+('pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'mime-type-presentation.png', 'far file-powerpoint'),
 ('sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide', '', ''),
 ('ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', '', ''),
 ('potx', 'application/vnd.openxmlformats-officedocument.presentationml.template', '', ''),
-('xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'mime-type-spreadsheet.png', 'file-excel-o'),
+('xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'mime-type-spreadsheet.png', 'far file-excel'),
 ('xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', '', ''),
-('docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'mime-type-document.png', 'file-word-o'),
+('docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'mime-type-document.png', 'far file-word'),
 ('dotx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', '', ''),
 ('mgp', 'application/vnd.osgeo.mapguide.package', '', ''),
 ('dp', 'application/vnd.osgi.dp', '', ''),
@@ -2225,21 +2225,21 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('sdkd', 'application/vnd.solent.sdkm+xml', '', ''),
 ('dxp', 'application/vnd.spotfire.dxp', '', ''),
 ('sfs', 'application/vnd.spotfire.sfs', '', ''),
-('sdc', 'application/vnd.stardivision.calc', 'mime-type-spreadsheet.png', 'file-excel-o'),
+('sdc', 'application/vnd.stardivision.calc', 'mime-type-spreadsheet.png', 'far file-excel'),
 ('sda', 'application/vnd.stardivision.draw', '', ''),
-('sdd', 'application/vnd.stardivision.impress', 'mime-type-presentation.png', 'file-powerpoint-o'),
+('sdd', 'application/vnd.stardivision.impress', 'mime-type-presentation.png', 'far file-powerpoint'),
 ('smf', 'application/vnd.stardivision.math', '', ''),
 ('sdw', 'application/vnd.stardivision.writer', 'mime-type-document.png', ''),
 ('vor', 'application/vnd.stardivision.writer', '', ''),
 ('sgl', 'application/vnd.stardivision.writer-global', '', ''),
 ('smzip', 'application/vnd.stepmania.package', '', ''),
 ('sm', 'application/vnd.stepmania.stepchart', '', ''),
-('sxc', 'application/vnd.sun.xml.calc', 'mime-type-spreadsheet.png', 'file-excel-o'),
-('stc', 'application/vnd.sun.xml.calc.template', 'mime-type-spreadsheet.png', 'file-excel-o'),
+('sxc', 'application/vnd.sun.xml.calc', 'mime-type-spreadsheet.png', 'far file-excel'),
+('stc', 'application/vnd.sun.xml.calc.template', 'mime-type-spreadsheet.png', 'far file-excel'),
 ('sxd', 'application/vnd.sun.xml.draw', 'mime-type-vector.png', ''),
 ('std', 'application/vnd.sun.xml.draw.template', '', ''),
-('sxi', 'application/vnd.sun.xml.impress', 'mime-type-presentation.png', 'file-powerpoint-o'),
-('sti', 'application/vnd.sun.xml.impress.template', 'mime-type-presentation.png', 'file-powerpoint-o'),
+('sxi', 'application/vnd.sun.xml.impress', 'mime-type-presentation.png', 'far file-powerpoint'),
+('sti', 'application/vnd.sun.xml.impress.template', 'mime-type-presentation.png', 'far file-powerpoint'),
 ('sxm', 'application/vnd.sun.xml.math', '', ''),
 ('sxw', 'application/vnd.sun.xml.writer', 'mime-type-document.png', ''),
 ('sxg', 'application/vnd.sun.xml.writer.global', '', ''),
@@ -2299,9 +2299,9 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('hlp', 'application/winhlp', '', ''),
 ('wsdl', 'application/wsdl+xml', '', ''),
 ('wspolicy', 'application/wspolicy+xml', '', ''),
-('7z', 'application/x-7z-compressed', 'mime-type-archive.png', 'file-archive-o'),
+('7z', 'application/x-7z-compressed', 'mime-type-archive.png', 'far file-archive'),
 ('abw', 'application/x-abiword', '', ''),
-('ace', 'application/x-ace-compressed', 'mime-type-archive.png', 'file-archive-o'),
+('ace', 'application/x-ace-compressed', 'mime-type-archive.png', 'far file-archive'),
 ('dmg', 'application/x-apple-diskimage', '', ''),
 ('aab', 'application/x-authorware-bin', '', ''),
 ('x32', 'application/x-authorware-bin', '', ''),
@@ -2314,7 +2314,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('blb', 'application/x-blorb', '', ''),
 ('blorb', 'application/x-blorb', '', ''),
 ('bz', 'application/x-bzip', '', ''),
-('bz2', 'application/x-bzip2', 'mime-type-archive.png', 'file-archive-o'),
+('bz2', 'application/x-bzip2', 'mime-type-archive.png', 'far file-archive'),
 ('boz', 'application/x-bzip2', '', ''),
 ('cbr', 'application/x-cbr', '', ''),
 ('cba', 'application/x-cbr', '', ''),
@@ -2327,7 +2327,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('pgn', 'application/x-chess-pgn', '', ''),
 ('nsc', 'application/x-conference', '', ''),
 ('cpio', 'application/x-cpio', '', ''),
-('csh', 'application/x-csh', '', 'file-code-o'),
+('csh', 'application/x-csh', '', 'far file-code'),
 ('deb', 'application/x-debian-package', '', ''),
 ('udeb', 'application/x-debian-package', '', ''),
 ('dgc', 'application/x-dgc-compressed', '', ''),
@@ -2390,7 +2390,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('exe', 'application/x-msdownload', '', ''),
 ('dll', 'application/x-msdownload', '', ''),
 ('com', 'application/x-msdownload', '', ''),
-('bat', 'application/x-msdownload', '', 'file-code-o'),
+('bat', 'application/x-msdownload', '', 'far file-code'),
 ('msi', 'application/x-msdownload', '', ''),
 ('mvb', 'application/x-msmediaview', '', ''),
 ('m13', 'application/x-msmediaview', '', ''),
@@ -2411,13 +2411,13 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('p7b', 'application/x-pkcs7-certificates', '', ''),
 ('spc', 'application/x-pkcs7-certificates', '', ''),
 ('p7r', 'application/x-pkcs7-certreqresp', '', ''),
-('rar', 'application/x-rar-compressed', 'mime-type-archive.png', 'file-archive-o'),
+('rar', 'application/x-rar-compressed', 'mime-type-archive.png', 'far file-archive'),
 ('ris', 'application/x-research-info-systems', '', ''),
-('sh', 'application/x-sh', '', 'file-code-o'),
+('sh', 'application/x-sh', '', 'far file-code'),
 ('shar', 'application/x-shar', '', ''),
 ('swf', 'application/x-shockwave-flash', '', ''),
 ('xap', 'application/x-silverlight-app', '', ''),
-('sql', 'text/x-sql', '', 'file-code-o'),
+('sql', 'text/x-sql', '', 'far file-code'),
 ('sit', 'application/x-stuffit', '', ''),
 ('sitx', 'application/x-stuffitx', '', ''),
 ('srt', 'application/x-subrip', '', ''),
@@ -2425,7 +2425,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('sv4crc', 'application/x-sv4crc', '', ''),
 ('t3', 'application/x-t3vm-image', '', ''),
 ('gam', 'application/x-tads', '', ''),
-('tar', 'application/x-tar', 'mime-type-archive.png', 'file-archive-o'),
+('tar', 'application/x-tar', 'mime-type-archive.png', 'far file-archive'),
 ('tcl', 'application/x-tcl', '', ''),
 ('tex', 'application/x-tex', '', ''),
 ('tfm', 'application/x-tex-tfm', '', ''),
@@ -2433,7 +2433,7 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('texi', 'application/x-texinfo', '', ''),
 ('obj', 'application/x-tgif', '', ''),
 ('ustar', 'application/x-ustar', '', ''),
-('src', 'application/x-wais-source', '', 'file-code-o'),
+('src', 'application/x-wais-source', '', 'far file-code'),
 ('der', 'application/x-x509-ca-cert', '', ''),
 ('crt', 'application/x-x509-ca-cert', '', ''),
 ('fig', 'application/x-xfig', '', ''),
@@ -2451,14 +2451,14 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('xaml', 'application/xaml+xml', '', ''),
 ('xdf', 'application/xcap-diff+xml', '', ''),
 ('xenc', 'application/xenc+xml', '', ''),
-('xhtml', 'application/xhtml+xml', '', 'file-code-o'),
+('xhtml', 'application/xhtml+xml', '', 'far file-code'),
 ('xht', 'application/xhtml+xml', '', ''),
-('xml', 'application/xml', '', 'file-code-o'),
-('xsl', 'application/xml', '', 'file-code-o'),
-('dtd', 'application/xml-dtd', '', 'file-code-o'),
+('xml', 'application/xml', '', 'far file-code'),
+('xsl', 'application/xml', '', 'far file-code'),
+('dtd', 'application/xml-dtd', '', 'far file-code'),
 ('xop', 'application/xop+xml', '', ''),
 ('xpl', 'application/xproc+xml', '', ''),
-('xslt', 'application/xslt+xml', '', 'file-code-o'),
+('xslt', 'application/xslt+xml', '', 'far file-code'),
 ('xspf', 'application/xspf+xml', '', ''),
 ('mxml', 'application/xv+xml', '', ''),
 ('xhvml', 'application/xv+xml', '', ''),
@@ -2466,129 +2466,129 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('xvm', 'application/xv+xml', '', ''),
 ('yang', 'application/yang', '', ''),
 ('yin', 'application/yin+xml', '', ''),
-('zip', 'application/zip', 'mime-type-archive.png', 'file-archive-o'),
-('adp', 'audio/adpcm', 'mime-type-audio.png', 'file-audio-o'),
-('au', 'audio/basic', 'mime-type-audio.png', 'file-audio-o'),
-('snd', 'audio/basic', 'mime-type-audio.png', 'file-audio-o'),
-('mid', 'audio/midi', 'mime-type-audio.png', 'file-audio-o'),
-('midi', 'audio/midi', 'mime-type-audio.png', 'file-audio-o'),
-('kar', 'audio/midi', 'mime-type-audio.png', 'file-audio-o'),
-('rmi', 'audio/midi', 'mime-type-audio.png', 'file-audio-o'),
-('m4a', 'audio/mp4', 'mime-type-audio.png', 'file-audio-o'),
-('mp4a', 'audio/mp4', 'mime-type-audio.png', 'file-audio-o'),
-('m4p', 'audio/mp4a-latm', 'mime-type-audio.png', 'file-audio-o'),
-('mpga', 'audio/mpeg', 'mime-type-audio.png', 'file-audio-o'),
-('mp2', 'audio/mpeg', 'mime-type-audio.png', 'file-audio-o'),
-('mp2a', 'audio/mpeg', 'mime-type-audio.png', 'file-audio-o'),
-('mp3', 'audio/mpeg', 'mime-type-audio.png', 'file-audio-o'),
-('m2a', 'audio/mpeg', 'mime-type-audio.png', 'file-audio-o'),
-('m3a', 'audio/mpeg', 'mime-type-audio.png', 'file-audio-o'),
-('oga', 'audio/ogg', 'mime-type-audio.png', 'file-audio-o'),
-('ogg', 'audio/ogg', 'mime-type-audio.png', 'file-audio-o'),
-('spx', 'audio/ogg', 'mime-type-audio.png', 'file-audio-o'),
-('s3m', 'audio/s3m', 'mime-type-audio.png', 'file-audio-o'),
-('sil', 'audio/silk', 'mime-type-audio.png', 'file-audio-o'),
-('uva', 'audio/vnd.dece.audio', 'mime-type-audio.png', 'file-audio-o'),
-('uvva', 'audio/vnd.dece.audio', 'mime-type-audio.png', 'file-audio-o'),
-('eol', 'audio/vnd.digital-winds', 'mime-type-audio.png', 'file-audio-o'),
-('dra', 'audio/vnd.dra', 'mime-type-audio.png', 'file-audio-o'),
-('dts', 'audio/vnd.dts', 'mime-type-audio.png', 'file-audio-o'),
-('dtshd', 'audio/vnd.dts.hd', 'mime-type-audio.png', 'file-audio-o'),
-('lvp', 'audio/vnd.lucent.voice', 'mime-type-audio.png', 'file-audio-o'),
-('pya', 'audio/vnd.ms-playready.media.pya', 'mime-type-audio.png', 'file-audio-o'),
-('ecelp4800', 'audio/vnd.nuera.ecelp4800', 'mime-type-audio.png', 'file-audio-o'),
-('ecelp7470', 'audio/vnd.nuera.ecelp7470', 'mime-type-audio.png', 'file-audio-o'),
-('ecelp9600', 'audio/vnd.nuera.ecelp9600', 'mime-type-audio.png', 'file-audio-o'),
-('rip', 'audio/vnd.rip', 'mime-type-audio.png', 'file-audio-o'),
-('weba', 'audio/webm', 'mime-type-audio.png', 'file-audio-o'),
-('aac', 'audio/x-aac', 'mime-type-audio.png', 'file-audio-o'),
-('aif', 'audio/x-aiff', 'mime-type-audio.png', 'file-audio-o'),
-('aiff', 'audio/x-aiff', 'mime-type-audio.png', 'file-audio-o'),
-('aifc', 'audio/x-aiff', 'mime-type-audio.png', 'file-audio-o'),
-('caf', 'audio/x-caf', 'mime-type-audio.png', 'file-audio-o'),
-('flac', 'audio/x-flac', 'mime-type-audio.png', 'file-audio-o'),
-('mka', 'audio/x-matroska', 'mime-type-audio.png', 'file-audio-o'),
-('m3u', 'audio/x-mpegurl', 'mime-type-audio.png', 'file-audio-o'),
-('wax', 'audio/x-ms-wax', 'mime-type-audio.png', 'file-audio-o'),
-('wma', 'audio/x-ms-wma', 'mime-type-audio.png', 'file-audio-o'),
-('ram', 'audio/x-pn-realaudio', 'mime-type-audio.png', 'file-audio-o'),
-('ra', 'audio/x-pn-realaudio', 'mime-type-audio.png', 'file-audio-o'),
-('rmp', 'audio/x-pn-realaudio-plugin', 'mime-type-audio.png', 'file-audio-o'),
-('wav', 'audio/x-wav', 'mime-type-audio.png', 'file-audio-o'),
-('xm', 'audio/xm', 'mime-type-audio.png', 'file-audio-o'),
+('zip', 'application/zip', 'mime-type-archive.png', 'far file-archive'),
+('adp', 'audio/adpcm', 'mime-type-audio.png', 'far file-audio'),
+('au', 'audio/basic', 'mime-type-audio.png', 'far file-audio'),
+('snd', 'audio/basic', 'mime-type-audio.png', 'far file-audio'),
+('mid', 'audio/midi', 'mime-type-audio.png', 'far file-audio'),
+('midi', 'audio/midi', 'mime-type-audio.png', 'far file-audio'),
+('kar', 'audio/midi', 'mime-type-audio.png', 'far file-audio'),
+('rmi', 'audio/midi', 'mime-type-audio.png', 'far file-audio'),
+('m4a', 'audio/mp4', 'mime-type-audio.png', 'far file-audio'),
+('mp4a', 'audio/mp4', 'mime-type-audio.png', 'far file-audio'),
+('m4p', 'audio/mp4a-latm', 'mime-type-audio.png', 'far file-audio'),
+('mpga', 'audio/mpeg', 'mime-type-audio.png', 'far file-audio'),
+('mp2', 'audio/mpeg', 'mime-type-audio.png', 'far file-audio'),
+('mp2a', 'audio/mpeg', 'mime-type-audio.png', 'far file-audio'),
+('mp3', 'audio/mpeg', 'mime-type-audio.png', 'far file-audio'),
+('m2a', 'audio/mpeg', 'mime-type-audio.png', 'far file-audio'),
+('m3a', 'audio/mpeg', 'mime-type-audio.png', 'far file-audio'),
+('oga', 'audio/ogg', 'mime-type-audio.png', 'far file-audio'),
+('ogg', 'audio/ogg', 'mime-type-audio.png', 'far file-audio'),
+('spx', 'audio/ogg', 'mime-type-audio.png', 'far file-audio'),
+('s3m', 'audio/s3m', 'mime-type-audio.png', 'far file-audio'),
+('sil', 'audio/silk', 'mime-type-audio.png', 'far file-audio'),
+('uva', 'audio/vnd.dece.audio', 'mime-type-audio.png', 'far file-audio'),
+('uvva', 'audio/vnd.dece.audio', 'mime-type-audio.png', 'far file-audio'),
+('eol', 'audio/vnd.digital-winds', 'mime-type-audio.png', 'far file-audio'),
+('dra', 'audio/vnd.dra', 'mime-type-audio.png', 'far file-audio'),
+('dts', 'audio/vnd.dts', 'mime-type-audio.png', 'far file-audio'),
+('dtshd', 'audio/vnd.dts.hd', 'mime-type-audio.png', 'far file-audio'),
+('lvp', 'audio/vnd.lucent.voice', 'mime-type-audio.png', 'far file-audio'),
+('pya', 'audio/vnd.ms-playready.media.pya', 'mime-type-audio.png', 'far file-audio'),
+('ecelp4800', 'audio/vnd.nuera.ecelp4800', 'mime-type-audio.png', 'far file-audio'),
+('ecelp7470', 'audio/vnd.nuera.ecelp7470', 'mime-type-audio.png', 'far file-audio'),
+('ecelp9600', 'audio/vnd.nuera.ecelp9600', 'mime-type-audio.png', 'far file-audio'),
+('rip', 'audio/vnd.rip', 'mime-type-audio.png', 'far file-audio'),
+('weba', 'audio/webm', 'mime-type-audio.png', 'far file-audio'),
+('aac', 'audio/x-aac', 'mime-type-audio.png', 'far file-audio'),
+('aif', 'audio/x-aiff', 'mime-type-audio.png', 'far file-audio'),
+('aiff', 'audio/x-aiff', 'mime-type-audio.png', 'far file-audio'),
+('aifc', 'audio/x-aiff', 'mime-type-audio.png', 'far file-audio'),
+('caf', 'audio/x-caf', 'mime-type-audio.png', 'far file-audio'),
+('flac', 'audio/x-flac', 'mime-type-audio.png', 'far file-audio'),
+('mka', 'audio/x-matroska', 'mime-type-audio.png', 'far file-audio'),
+('m3u', 'audio/x-mpegurl', 'mime-type-audio.png', 'far file-audio'),
+('wax', 'audio/x-ms-wax', 'mime-type-audio.png', 'far file-audio'),
+('wma', 'audio/x-ms-wma', 'mime-type-audio.png', 'far file-audio'),
+('ram', 'audio/x-pn-realaudio', 'mime-type-audio.png', 'far file-audio'),
+('ra', 'audio/x-pn-realaudio', 'mime-type-audio.png', 'far file-audio'),
+('rmp', 'audio/x-pn-realaudio-plugin', 'mime-type-audio.png', 'far file-audio'),
+('wav', 'audio/x-wav', 'mime-type-audio.png', 'far file-audio'),
+('xm', 'audio/xm', 'mime-type-audio.png', 'far file-audio'),
 ('cdx', 'chemical/x-cdx', 'mime-type-vector.png', ''),
 ('cif', 'chemical/x-cif', '', ''),
 ('cmdf', 'chemical/x-cmdf', '', ''),
 ('cml', 'chemical/x-cml', '', ''),
 ('csml', 'chemical/x-csml', '', ''),
 ('xyz', 'chemical/x-xyz', '', ''),
-('bmp', 'image/bmp', 'mime-type-image.png', 'file-image-o'),
-('cgm', 'image/cgm', 'mime-type-image.png', 'file-image-o'),
-('g3', 'image/g3fax', 'mime-type-image.png', 'file-image-o'),
-('gif', 'image/gif', 'mime-type-image.png', 'file-image-o'),
-('ief', 'image/ief', 'mime-type-image.png', 'file-image-o'),
-('jp2', 'image/jp2', 'mime-type-image.png', 'file-image-o'),
-('jpeg', 'image/jpeg', 'mime-type-image.png', 'file-image-o'),
-('jpg', 'image/jpeg', 'mime-type-image.png', 'file-image-o'),
-('jpe', 'image/jpeg', 'mime-type-image.png', 'file-image-o'),
-('ktx', 'image/ktx', 'mime-type-image.png', 'file-image-o'),
-('pict', 'image/pict', 'mime-type-image.png', 'file-image-o'),
-('pic', 'image/pict', 'mime-type-image.png', 'file-image-o'),
-('pct', 'image/pict', 'mime-type-image.png', 'file-image-o'),
-('png', 'image/png', 'mime-type-png.png', 'file-image-o'),
-('btif', 'image/prs.btif', 'mime-type-image.png', 'file-image-o'),
-('sgi', 'image/sgi', 'mime-type-image.png', 'file-image-o');
+('bmp', 'image/bmp', 'mime-type-image.png', 'far file-image'),
+('cgm', 'image/cgm', 'mime-type-image.png', 'far file-image'),
+('g3', 'image/g3fax', 'mime-type-image.png', 'far file-image'),
+('gif', 'image/gif', 'mime-type-image.png', 'far file-image'),
+('ief', 'image/ief', 'mime-type-image.png', 'far file-image'),
+('jp2', 'image/jp2', 'mime-type-image.png', 'far file-image'),
+('jpeg', 'image/jpeg', 'mime-type-image.png', 'far file-image'),
+('jpg', 'image/jpeg', 'mime-type-image.png', 'far file-image'),
+('jpe', 'image/jpeg', 'mime-type-image.png', 'far file-image'),
+('ktx', 'image/ktx', 'mime-type-image.png', 'far file-image'),
+('pict', 'image/pict', 'mime-type-image.png', 'far file-image'),
+('pic', 'image/pict', 'mime-type-image.png', 'far file-image'),
+('pct', 'image/pict', 'mime-type-image.png', 'far file-image'),
+('png', 'image/png', 'mime-type-png.png', 'far file-image'),
+('btif', 'image/prs.btif', 'mime-type-image.png', 'far file-image'),
+('sgi', 'image/sgi', 'mime-type-image.png', 'far file-image');
 INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) VALUES
-('svg', 'image/svg+xml', 'mime-type-image.png', 'file-image-o'),
-('svgz', 'image/svg+xml', 'mime-type-image.png', 'file-image-o'),
-('tiff', 'image/tiff', 'mime-type-image.png', 'file-image-o'),
-('tif', 'image/tiff', 'mime-type-image.png', 'file-image-o'),
-('psd', 'image/vnd.adobe.photoshop', 'mime-type-psd.png', 'file-image-o'),
-('uvi', 'image/vnd.dece.graphic', 'mime-type-image.png', 'file-image-o'),
-('uvvi', 'image/vnd.dece.graphic', 'mime-type-image.png', 'file-image-o'),
-('uvg', 'image/vnd.dece.graphic', 'mime-type-image.png', 'file-image-o'),
-('uvvg', 'image/vnd.dece.graphic', 'mime-type-image.png', 'file-image-o'),
-('sub', 'image/vnd.dvb.subtitle', 'mime-type-image.png', 'file-image-o'),
-('djvu', 'image/vnd.djvu', 'mime-type-image.png', 'file-image-o'),
-('djv', 'image/vnd.djvu', 'mime-type-image.png', 'file-image-o'),
-('dwg', 'image/vnd.dwg', 'mime-type-image.png', 'file-image-o'),
-('dxf', 'image/vnd.dxf', 'mime-type-image.png', 'file-image-o'),
-('fbs', 'image/vnd.fastbidsheet', 'mime-type-image.png', 'file-image-o'),
-('fpx', 'image/vnd.fpx', 'mime-type-image.png', 'file-image-o'),
-('fst', 'image/vnd.fst', 'mime-type-image.png', 'file-image-o'),
-('mmr', 'image/vnd.fujixerox.edmics-mmr', 'mime-type-image.png', 'file-image-o'),
-('rlc', 'image/vnd.fujixerox.edmics-rlc', 'mime-type-image.png', 'file-image-o'),
-('mdi', 'image/vnd.ms-modi', 'mime-type-image.png', 'file-image-o'),
-('wdp', 'image/vnd.ms-photo', 'mime-type-image.png', 'file-image-o'),
-('npx', 'image/vnd.net-fpx', 'mime-type-image.png', 'file-image-o'),
-('wbmp', 'image/vnd.wap.wbmp', 'mime-type-image.png', 'file-image-o'),
-('xif', 'image/vnd.xiff', 'mime-type-image.png', 'file-image-o'),
-('webp', 'image/webp', 'mime-type-image.png', 'file-image-o'),
-('3ds', 'image/x-3ds', 'mime-type-image.png', 'file-image-o'),
-('ras', 'image/x-cmu-raster', 'mime-type-image.png', 'file-image-o'),
-('cmx', 'image/x-cmx', 'mime-type-image.png', 'file-image-o'),
-('fh', 'image/x-freehand', 'mime-type-image.png', 'file-image-o'),
-('fhc', 'image/x-freehand', 'mime-type-image.png', 'file-image-o'),
-('fh4', 'image/x-freehand', 'mime-type-image.png', 'file-image-o'),
-('fh5', 'image/x-freehand', 'mime-type-image.png', 'file-image-o'),
-('fh7', 'image/x-freehand', 'mime-type-image.png', 'file-image-o'),
-('ico', 'image/x-icon', 'mime-type-image.png', 'file-image-o'),
-('pntg', 'image/x-macpaint', 'mime-type-image.png', 'file-image-o'),
-('pnt', 'image/x-macpaint', 'mime-type-image.png', 'file-image-o'),
-('mac', 'image/x-macpaint', 'mime-type-image.png', 'file-image-o'),
-('sid', 'image/x-mrsid-image', 'mime-type-image.png', 'file-image-o'),
-('pcx', 'image/x-pcx', 'mime-type-image.png', 'file-image-o'),
-('pnm', 'image/x-portable-anymap', 'mime-type-image.png', 'file-image-o'),
-('pbm', 'image/x-portable-bitmap', 'mime-type-image.png', 'file-image-o'),
-('pgm', 'image/x-portable-graymap', 'mime-type-image.png', 'file-image-o'),
-('ppm', 'image/x-portable-pixmap', 'mime-type-image.png', 'file-image-o'),
-('qtif', 'image/x-quicktime', 'mime-type-image.png', 'file-image-o'),
-('qti', 'image/x-quicktime', 'mime-type-image.png', 'file-image-o'),
-('rgb', 'image/x-rgb', 'mime-type-image.png', 'file-image-o'),
-('tga', 'image/x-tga', 'mime-type-image.png', 'file-image-o'),
-('xbm', 'image/x-xbitmap', 'mime-type-image.png', 'file-image-o'),
-('xpm', 'image/x-xpixmap', 'mime-type-image.png', 'file-image-o'),
-('xwd', 'image/x-xwindowdump', 'mime-type-image.png', 'file-image-o'),
+('svg', 'image/svg+xml', 'mime-type-image.png', 'far file-image'),
+('svgz', 'image/svg+xml', 'mime-type-image.png', 'far file-image'),
+('tiff', 'image/tiff', 'mime-type-image.png', 'far file-image'),
+('tif', 'image/tiff', 'mime-type-image.png', 'far file-image'),
+('psd', 'image/vnd.adobe.photoshop', 'mime-type-psd.png', 'far file-image'),
+('uvi', 'image/vnd.dece.graphic', 'mime-type-image.png', 'far file-image'),
+('uvvi', 'image/vnd.dece.graphic', 'mime-type-image.png', 'far file-image'),
+('uvg', 'image/vnd.dece.graphic', 'mime-type-image.png', 'far file-image'),
+('uvvg', 'image/vnd.dece.graphic', 'mime-type-image.png', 'far file-image'),
+('sub', 'image/vnd.dvb.subtitle', 'mime-type-image.png', 'far file-image'),
+('djvu', 'image/vnd.djvu', 'mime-type-image.png', 'far file-image'),
+('djv', 'image/vnd.djvu', 'mime-type-image.png', 'far file-image'),
+('dwg', 'image/vnd.dwg', 'mime-type-image.png', 'far file-image'),
+('dxf', 'image/vnd.dxf', 'mime-type-image.png', 'far file-image'),
+('fbs', 'image/vnd.fastbidsheet', 'mime-type-image.png', 'far file-image'),
+('fpx', 'image/vnd.fpx', 'mime-type-image.png', 'far file-image'),
+('fst', 'image/vnd.fst', 'mime-type-image.png', 'far file-image'),
+('mmr', 'image/vnd.fujixerox.edmics-mmr', 'mime-type-image.png', 'far file-image'),
+('rlc', 'image/vnd.fujixerox.edmics-rlc', 'mime-type-image.png', 'far file-image'),
+('mdi', 'image/vnd.ms-modi', 'mime-type-image.png', 'far file-image'),
+('wdp', 'image/vnd.ms-photo', 'mime-type-image.png', 'far file-image'),
+('npx', 'image/vnd.net-fpx', 'mime-type-image.png', 'far file-image'),
+('wbmp', 'image/vnd.wap.wbmp', 'mime-type-image.png', 'far file-image'),
+('xif', 'image/vnd.xiff', 'mime-type-image.png', 'far file-image'),
+('webp', 'image/webp', 'mime-type-image.png', 'far file-image'),
+('3ds', 'image/x-3ds', 'mime-type-image.png', 'far file-image'),
+('ras', 'image/x-cmu-raster', 'mime-type-image.png', 'far file-image'),
+('cmx', 'image/x-cmx', 'mime-type-image.png', 'far file-image'),
+('fh', 'image/x-freehand', 'mime-type-image.png', 'far file-image'),
+('fhc', 'image/x-freehand', 'mime-type-image.png', 'far file-image'),
+('fh4', 'image/x-freehand', 'mime-type-image.png', 'far file-image'),
+('fh5', 'image/x-freehand', 'mime-type-image.png', 'far file-image'),
+('fh7', 'image/x-freehand', 'mime-type-image.png', 'far file-image'),
+('ico', 'image/x-icon', 'mime-type-image.png', 'far file-image'),
+('pntg', 'image/x-macpaint', 'mime-type-image.png', 'far file-image'),
+('pnt', 'image/x-macpaint', 'mime-type-image.png', 'far file-image'),
+('mac', 'image/x-macpaint', 'mime-type-image.png', 'far file-image'),
+('sid', 'image/x-mrsid-image', 'mime-type-image.png', 'far file-image'),
+('pcx', 'image/x-pcx', 'mime-type-image.png', 'far file-image'),
+('pnm', 'image/x-portable-anymap', 'mime-type-image.png', 'far file-image'),
+('pbm', 'image/x-portable-bitmap', 'mime-type-image.png', 'far file-image'),
+('pgm', 'image/x-portable-graymap', 'mime-type-image.png', 'far file-image'),
+('ppm', 'image/x-portable-pixmap', 'mime-type-image.png', 'far file-image'),
+('qtif', 'image/x-quicktime', 'mime-type-image.png', 'far file-image'),
+('qti', 'image/x-quicktime', 'mime-type-image.png', 'far file-image'),
+('rgb', 'image/x-rgb', 'mime-type-image.png', 'far file-image'),
+('tga', 'image/x-tga', 'mime-type-image.png', 'far file-image'),
+('xbm', 'image/x-xbitmap', 'mime-type-image.png', 'far file-image'),
+('xpm', 'image/x-xpixmap', 'mime-type-image.png', 'far file-image'),
+('xwd', 'image/x-xwindowdump', 'mime-type-image.png', 'far file-image'),
 ('eml', 'message/rfc822', '', ''),
 ('mime', 'message/rfc822', '', ''),
 ('igs', 'model/iges', '', ''),
@@ -2610,162 +2610,162 @@ INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) V
 ('x3dvz', 'model/x3d+vrml', '', ''),
 ('x3d', 'model/x3d+xml', '', ''),
 ('x3dz', 'model/x3d+xml', '', ''),
-('manifest', 'text/cache-manifest', '', 'file-text-o'),
-('appcache', 'text/cache-manifest', '', 'file-text-o'),
-('ics', 'text/calendar', '', 'file-text-o'),
-('ifb', 'text/calendar', '', 'file-text-o'),
-('css', 'text/css', '', 'file-code-o'),
-('csv', 'text/csv', 'mime-type-spreadsheet.png', 'file-excel-o'),
-('html', 'text/html', '', 'file-code-o'),
-('htm', 'text/html', '', 'file-code-o'),
-('n3', 'text/n3', '', 'file-text-o'),
-('txt', 'text/plain', 'mime-type-document.png', 'file-text-o'),
-('text', 'text/plain', '', 'file-text-o'),
-('conf', 'text/plain', '', 'file-text-o'),
-('def', 'text/plain', '', 'file-text-o'),
-('list', 'text/plain', '', 'file-text-o'),
-('log', 'text/plain', '', 'file-text-o'),
-('in', 'text/plain', '', 'file-text-o'),
-('dsc', 'text/prs.lines.tag', '', 'file-text-o'),
-('rtx', 'text/richtext', '', 'file-text-o'),
-('sgml', 'text/sgml', '', 'file-text-o'),
-('sgm', 'text/sgml', '', 'file-text-o'),
-('tsv', 'text/tab-separated-values', '', 'file-text-o'),
-('t', 'text/troff', '', 'file-text-o'),
-('tr', 'text/troff', '', 'file-text-o'),
-('roff', 'text/troff', '', 'file-text-o'),
-('man', 'text/troff', '', 'file-text-o'),
-('me', 'text/troff', '', 'file-text-o'),
-('ms', 'text/troff', '', 'file-text-o'),
-('ttl', 'text/turtle', '', 'file-code-o'),
-('uri', 'text/uri-list', '', 'file-text-o'),
-('uris', 'text/uri-list', '', 'file-text-o'),
-('urls', 'text/uri-list', '', 'file-text-o'),
-('vcard', 'text/vcard', '', 'file-text-o'),
-('curl', 'text/vnd.curl', '', 'file-text-o'),
-('dcurl', 'text/vnd.curl.dcurl', '', 'file-text-o'),
-('scurl', 'text/vnd.curl.scurl', '', 'file-text-o'),
-('mcurl', 'text/vnd.curl.mcurl', '', 'file-text-o'),
-('fly', 'text/vnd.fly', '', 'file-text-o'),
-('flx', 'text/vnd.fmi.flexstor', '', 'file-text-o'),
-('gv', 'text/vnd.graphviz', '', 'file-text-o'),
-('3dml', 'text/vnd.in3d.3dml', '', 'file-text-o'),
-('spot', 'text/vnd.in3d.spot', '', 'file-text-o'),
-('jad', 'text/vnd.sun.j2me.app-descriptor', '', 'file-text-o'),
-('wml', 'text/vnd.wap.wml', '', 'file-text-o'),
-('wmls', 'text/vnd.wap.wmlscript', '', 'file-text-o'),
-('s', 'text/x-asm', '', 'file-text-o'),
-('asm', 'text/x-asm', '', 'file-code-o'),
-('c', 'text/x-c', '', 'file-code-o'),
-('cc', 'text/x-c', '', 'file-code-o'),
-('cxx', 'text/x-c', '', 'file-code-o'),
-('cpp', 'text/x-c', '', 'file-code-o'),
-('h', 'text/x-c', '', 'file-code-o'),
-('hh', 'text/x-c', '', 'file-code-o'),
-('dic', 'text/x-c', '', 'file-text-o'),
-('f', 'text/x-fortran', '', 'file-code-o'),
-('for', 'text/x-fortran', '', 'file-code-o'),
-('f77', 'text/x-fortran', '', 'file-text-o'),
-('f90', 'text/x-fortran', '', 'file-text-o'),
-('java', 'text/x-java-source', '', 'file-code-o'),
-('opml', 'text/x-opml', '', 'file-text-o'),
-('p', 'text/x-pascal', '', 'file-text-o'),
-('pas', 'text/x-pascal', '', 'file-code-o'),
-('php', 'application/x-httpd-php', '', 'file-code-o'),
-('coffee', 'text/x-coffeescript', '', 'file-code-o'),
-('lsp', 'text/x-common-lisp', '', 'file-code-o'),
-('lisp', 'text/x-common-lisp', '', 'file-code-o'),
-('diff', 'text/x-diff', '', 'file-code-o'),
-('go', 'text/x-go', '', 'file-code-o'),
-('lua', 'text/x-lua', '', 'file-code-o'),
-('pl', 'text/x-perl', '', 'file-code-o'),
-('prl', 'text/x-perl', '', 'file-code-o'),
-('perl', 'text/x-perl', '', 'file-code-o'),
-('py', 'text/x-python', '', 'file-code-o'),
-('nginx', 'text/nginx', '', 'file-code-o'),
-('ini', 'text/x-ini', '', 'file-text-o'),
-('rb', 'text/x-ruby', '', 'file-code-o'),
-('sass', 'text/x-sass', '', 'file-code-o'),
-('bash', 'text/x-sh', '', 'file-code-o'),
-('swift', 'text/x-swift', '', 'file-code-o'),
-('vb', 'text/x-vb', '', 'file-code-o'),
-('vbs', 'text/vbscript', '', 'file-code-o'),
-('vue', 'text/x-vue', '', 'file-code-o'),
-('yaml', 'text/x-yaml', '', 'file-text-o'),
-('md', 'text/x-markdown', '', 'file-text-o'),
-('xq', 'application/xquery', '', 'file-code-o'),
-('xquery', 'application/xquery', '', 'file-code-o'),
-('ps1', 'application/x-powershell', '', 'file-code-o'),
+('manifest', 'text/cache-manifest', '', 'far file-alt'),
+('appcache', 'text/cache-manifest', '', 'far file-alt'),
+('ics', 'text/calendar', '', 'far file-alt'),
+('ifb', 'text/calendar', '', 'far file-alt'),
+('css', 'text/css', '', 'far file-code'),
+('csv', 'text/csv', 'mime-type-spreadsheet.png', 'far file-excel'),
+('html', 'text/html', '', 'far file-code'),
+('htm', 'text/html', '', 'far file-code'),
+('n3', 'text/n3', '', 'far file-alt'),
+('txt', 'text/plain', 'mime-type-document.png', 'far file-alt'),
+('text', 'text/plain', '', 'far file-alt'),
+('conf', 'text/plain', '', 'far file-alt'),
+('def', 'text/plain', '', 'far file-alt'),
+('list', 'text/plain', '', 'far file-alt'),
+('log', 'text/plain', '', 'far file-alt'),
+('in', 'text/plain', '', 'far file-alt'),
+('dsc', 'text/prs.lines.tag', '', 'far file-alt'),
+('rtx', 'text/richtext', '', 'far file-alt'),
+('sgml', 'text/sgml', '', 'far file-alt'),
+('sgm', 'text/sgml', '', 'far file-alt'),
+('tsv', 'text/tab-separated-values', '', 'far file-alt'),
+('t', 'text/troff', '', 'far file-alt'),
+('tr', 'text/troff', '', 'far file-alt'),
+('roff', 'text/troff', '', 'far file-alt'),
+('man', 'text/troff', '', 'far file-alt'),
+('me', 'text/troff', '', 'far file-alt'),
+('ms', 'text/troff', '', 'far file-alt'),
+('ttl', 'text/turtle', '', 'far file-code'),
+('uri', 'text/uri-list', '', 'far file-alt'),
+('uris', 'text/uri-list', '', 'far file-alt'),
+('urls', 'text/uri-list', '', 'far file-alt'),
+('address-card', 'text/vcard', '', 'far file-alt'),
+('curl', 'text/vnd.curl', '', 'far file-alt'),
+('dcurl', 'text/vnd.curl.dcurl', '', 'far file-alt'),
+('scurl', 'text/vnd.curl.scurl', '', 'far file-alt'),
+('mcurl', 'text/vnd.curl.mcurl', '', 'far file-alt'),
+('fly', 'text/vnd.fly', '', 'far file-alt'),
+('flx', 'text/vnd.fmi.flexstor', '', 'far file-alt'),
+('gv', 'text/vnd.graphviz', '', 'far file-alt'),
+('3dml', 'text/vnd.in3d.3dml', '', 'far file-alt'),
+('spot', 'text/vnd.in3d.spot', '', 'far file-alt'),
+('jad', 'text/vnd.sun.j2me.app-descriptor', '', 'far file-alt'),
+('wml', 'text/vnd.wap.wml', '', 'far file-alt'),
+('wmls', 'text/vnd.wap.wmlscript', '', 'far file-alt'),
+('s', 'text/x-asm', '', 'far file-alt'),
+('asm', 'text/x-asm', '', 'far file-code'),
+('c', 'text/x-c', '', 'far file-code'),
+('far closed-captioning', 'text/x-c', '', 'far file-code'),
+('cxx', 'text/x-c', '', 'far file-code'),
+('cpp', 'text/x-c', '', 'far file-code'),
+('h', 'text/x-c', '', 'far file-code'),
+('hh', 'text/x-c', '', 'far file-code'),
+('dic', 'text/x-c', '', 'far file-alt'),
+('f', 'text/x-fortran', '', 'far file-code'),
+('for', 'text/x-fortran', '', 'far file-code'),
+('f77', 'text/x-fortran', '', 'far file-alt'),
+('f90', 'text/x-fortran', '', 'far file-alt'),
+('java', 'text/x-java-source', '', 'far file-code'),
+('opml', 'text/x-opml', '', 'far file-alt'),
+('p', 'text/x-pascal', '', 'far file-alt'),
+('pas', 'text/x-pascal', '', 'far file-code'),
+('php', 'application/x-httpd-php', '', 'far file-code'),
+('coffee', 'text/x-coffeescript', '', 'far file-code'),
+('lsp', 'text/x-common-lisp', '', 'far file-code'),
+('lisp', 'text/x-common-lisp', '', 'far file-code'),
+('diff', 'text/x-diff', '', 'far file-code'),
+('go', 'text/x-go', '', 'far file-code'),
+('lua', 'text/x-lua', '', 'far file-code'),
+('pl', 'text/x-perl', '', 'far file-code'),
+('prl', 'text/x-perl', '', 'far file-code'),
+('perl', 'text/x-perl', '', 'far file-code'),
+('py', 'text/x-python', '', 'far file-code'),
+('nginx', 'text/nginx', '', 'far file-code'),
+('ini', 'text/x-ini', '', 'far file-alt'),
+('rb', 'text/x-ruby', '', 'far file-code'),
+('sass', 'text/x-sass', '', 'far file-code'),
+('bash', 'text/x-sh', '', 'far file-code'),
+('swift', 'text/x-swift', '', 'far file-code'),
+('vb', 'text/x-vb', '', 'far file-code'),
+('vbs', 'text/vbscript', '', 'far file-code'),
+('vue', 'text/x-vue', '', 'far file-code'),
+('yaml', 'text/x-yaml', '', 'far file-alt'),
+('md', 'text/x-markdown', '', 'far file-alt'),
+('xq', 'application/xquery', '', 'far file-code'),
+('xquery', 'application/xquery', '', 'far file-code'),
+('ps1', 'application/x-powershell', '', 'far file-code'),
 ('aps', 'application/x-aspx', '', ''),
-('jsp', 'application/x-jsp', '', 'file-code-o'),
-('nfo', 'text/x-nfo', '', 'file-text-o'),
-('etx', 'text/x-setext', '', 'file-text-o'),
-('sfv', 'text/x-sfv', '', 'file-text-o'),
-('uu', 'text/x-uuencode', '', 'file-text-o'),
-('vcs', 'text/x-vcalendar', '', 'file-text-o'),
-('vcf', 'text/x-vcard', '', 'file-text-o'),
-('3gp', 'video/3gpp', 'mime-type-video.png', 'file-video-o'),
-('3g2', 'video/3gpp2', 'mime-type-video.png', 'file-video-o'),
-('h261', 'video/h261', 'mime-type-video.png', 'file-video-o'),
-('h263', 'video/h263', 'mime-type-video.png', 'file-video-o'),
-('h264', 'video/h264', 'mime-type-video.png', 'file-video-o'),
-('jpgv', 'video/jpeg', 'mime-type-video.png', 'file-video-o'),
-('jpm', 'video/jpm', 'mime-type-video.png', 'file-video-o'),
-('jpgm', 'video/jpm', 'mime-type-video.png', 'file-video-o'),
-('mj2', 'video/mj2', 'mime-type-video.png', 'file-video-o'),
-('mjp2', 'video/mj2', 'mime-type-video.png', 'file-video-o'),
-('ts', 'video/mp2t', 'mime-type-video.png', 'file-video-o'),
-('mp4', 'video/mp4', 'mime-type-video.png', 'file-video-o'),
-('mp4v', 'video/mp4', 'mime-type-video.png', 'file-video-o'),
-('mpg4', 'video/mp4', 'mime-type-video.png', 'file-video-o'),
-('m4v', 'video/mp4', 'mime-type-video.png', 'file-video-o'),
-('mpeg', 'video/mpeg', 'mime-type-video.png', 'file-video-o'),
-('mpg', 'video/mpeg', 'mime-type-video.png', 'file-video-o'),
-('mpe', 'video/mpeg', 'mime-type-video.png', 'file-video-o'),
-('m1v', 'video/mpeg', 'mime-type-video.png', 'file-video-o'),
-('m2v', 'video/mpeg', 'mime-type-video.png', 'file-video-o'),
-('ogv', 'video/ogg', 'mime-type-video.png', 'file-video-o'),
-('qt', 'video/quicktime', 'mime-type-video.png', 'file-video-o'),
-('mov', 'video/quicktime', 'mime-type-video.png', 'file-video-o'),
-('uvh', 'video/vnd.dece.hd', 'mime-type-video.png', 'file-video-o'),
-('uvvh', 'video/vnd.dece.hd', 'mime-type-video.png', 'file-video-o'),
-('uvm', 'video/vnd.dece.mobile', 'mime-type-video.png', 'file-video-o'),
-('uvvm', 'video/vnd.dece.mobile', 'mime-type-video.png', 'file-video-o'),
-('uvp', 'video/vnd.dece.pd', 'mime-type-video.png', 'file-video-o'),
-('uvvp', 'video/vnd.dece.pd', 'mime-type-video.png', 'file-video-o');
+('jsp', 'application/x-jsp', '', 'far file-code'),
+('nfo', 'text/x-nfo', '', 'far file-alt'),
+('etx', 'text/x-setext', '', 'far file-alt'),
+('sfv', 'text/x-sfv', '', 'far file-alt'),
+('uu', 'text/x-uuencode', '', 'far file-alt'),
+('vcs', 'text/x-vcalendar', '', 'far file-alt'),
+('vcf', 'text/x-vcard', '', 'far file-alt'),
+('3gp', 'video/3gpp', 'mime-type-video.png', 'far file-video'),
+('3g2', 'video/3gpp2', 'mime-type-video.png', 'far file-video'),
+('h261', 'video/h261', 'mime-type-video.png', 'far file-video'),
+('h263', 'video/h263', 'mime-type-video.png', 'far file-video'),
+('h264', 'video/h264', 'mime-type-video.png', 'far file-video'),
+('jpgv', 'video/jpeg', 'mime-type-video.png', 'far file-video'),
+('jpm', 'video/jpm', 'mime-type-video.png', 'far file-video'),
+('jpgm', 'video/jpm', 'mime-type-video.png', 'far file-video'),
+('mj2', 'video/mj2', 'mime-type-video.png', 'far file-video'),
+('mjp2', 'video/mj2', 'mime-type-video.png', 'far file-video'),
+('ts', 'video/mp2t', 'mime-type-video.png', 'far file-video'),
+('mp4', 'video/mp4', 'mime-type-video.png', 'far file-video'),
+('mp4v', 'video/mp4', 'mime-type-video.png', 'far file-video'),
+('mpg4', 'video/mp4', 'mime-type-video.png', 'far file-video'),
+('m4v', 'video/mp4', 'mime-type-video.png', 'far file-video'),
+('mpeg', 'video/mpeg', 'mime-type-video.png', 'far file-video'),
+('mpg', 'video/mpeg', 'mime-type-video.png', 'far file-video'),
+('mpe', 'video/mpeg', 'mime-type-video.png', 'far file-video'),
+('m1v', 'video/mpeg', 'mime-type-video.png', 'far file-video'),
+('m2v', 'video/mpeg', 'mime-type-video.png', 'far file-video'),
+('ogv', 'video/ogg', 'mime-type-video.png', 'far file-video'),
+('qt', 'video/quicktime', 'mime-type-video.png', 'far file-video'),
+('mov', 'video/quicktime', 'mime-type-video.png', 'far file-video'),
+('uvh', 'video/vnd.dece.hd', 'mime-type-video.png', 'far file-video'),
+('uvvh', 'video/vnd.dece.hd', 'mime-type-video.png', 'far file-video'),
+('uvm', 'video/vnd.dece.mobile', 'mime-type-video.png', 'far file-video'),
+('uvvm', 'video/vnd.dece.mobile', 'mime-type-video.png', 'far file-video'),
+('uvp', 'video/vnd.dece.pd', 'mime-type-video.png', 'far file-video'),
+('uvvp', 'video/vnd.dece.pd', 'mime-type-video.png', 'far file-video');
 INSERT INTO `sys_storage_mime_types` (`ext`, `mime_type`, `icon`, `icon_font`) VALUES
-('uvs', 'video/vnd.dece.sd', 'mime-type-video.png', 'file-video-o'),
-('uvvs', 'video/vnd.dece.sd', 'mime-type-video.png', 'file-video-o'),
-('uvv', 'video/vnd.dece.video', 'mime-type-video.png', 'file-video-o'),
-('uvvv', 'video/vnd.dece.video', 'mime-type-video.png', 'file-video-o'),
-('dvb', 'video/vnd.dvb.file', 'mime-type-video.png', 'file-video-o'),
-('fvt', 'video/vnd.fvt', 'mime-type-video.png', 'file-video-o'),
-('mxu', 'video/vnd.mpegurl', 'mime-type-video.png', 'file-video-o'),
-('m4u', 'video/vnd.mpegurl', 'mime-type-video.png', 'file-video-o'),
-('pyv', 'video/vnd.ms-playready.media.pyv', 'mime-type-video.png', 'file-video-o'),
-('uvu', 'video/vnd.uvvu.mp4', 'mime-type-video.png', 'file-video-o'),
-('uvvu', 'video/vnd.uvvu.mp4', 'mime-type-video.png', 'file-video-o'),
-('viv', 'video/vnd.vivo', 'mime-type-video.png', 'file-video-o'),
-('dv', 'video/x-dv', 'mime-type-video.png', 'file-video-o'),
-('dif', 'video/x-dv', 'mime-type-video.png', 'file-excel-o'),
-('webm', 'video/webm', 'mime-type-video.png', 'file-video-o'),
-('f4v', 'video/x-f4v', 'mime-type-video.png', 'file-video-o'),
-('fli', 'video/x-fli', 'mime-type-video.png', 'file-video-o'),
-('flv', 'video/x-flv', 'mime-type-video.png', 'file-video-o'),
-('mkv', 'video/x-matroska', 'mime-type-video.png', 'file-video-o'),
-('mk3d', 'video/x-matroska', 'mime-type-video.png', 'file-video-o'),
-('mks', 'video/x-matroska', 'mime-type-video.png', 'file-video-o'),
-('mng', 'video/x-mng', 'mime-type-video.png', 'file-video-o'),
-('asf', 'video/x-ms-asf', 'mime-type-video.png', 'file-video-o'),
-('asx', 'video/x-ms-asf', 'mime-type-video.png', 'file-video-o'),
-('vob', 'video/x-ms-vob', 'mime-type-video.png', 'file-video-o'),
-('wm', 'video/x-ms-wm', 'mime-type-video.png', 'file-video-o'),
-('wmv', 'video/x-ms-wmv', 'mime-type-video.png', 'file-video-o'),
-('wmx', 'video/x-ms-wmx', 'mime-type-video.png', 'file-video-o'),
-('wvx', 'video/x-ms-wvx', 'mime-type-video.png', 'file-video-o'),
-('avi', 'video/x-msvideo', 'mime-type-video.png', 'file-video-o'),
-('movie', 'video/x-sgi-movie', 'mime-type-video.png', 'file-video-o'),
-('smv', 'video/x-smv', 'mime-type-video.png', 'file-video-o'),
+('uvs', 'video/vnd.dece.sd', 'mime-type-video.png', 'far file-video'),
+('uvvs', 'video/vnd.dece.sd', 'mime-type-video.png', 'far file-video'),
+('uvv', 'video/vnd.dece.video', 'mime-type-video.png', 'far file-video'),
+('uvvv', 'video/vnd.dece.video', 'mime-type-video.png', 'far file-video'),
+('dvb', 'video/vnd.dvb.file', 'mime-type-video.png', 'far file-video'),
+('fvt', 'video/vnd.fvt', 'mime-type-video.png', 'far file-video'),
+('mxu', 'video/vnd.mpegurl', 'mime-type-video.png', 'far file-video'),
+('m4u', 'video/vnd.mpegurl', 'mime-type-video.png', 'far file-video'),
+('pyv', 'video/vnd.ms-playready.media.pyv', 'mime-type-video.png', 'far file-video'),
+('uvu', 'video/vnd.uvvu.mp4', 'mime-type-video.png', 'far file-video'),
+('uvvu', 'video/vnd.uvvu.mp4', 'mime-type-video.png', 'far file-video'),
+('viv', 'video/vnd.vivo', 'mime-type-video.png', 'far file-video'),
+('dv', 'video/x-dv', 'mime-type-video.png', 'far file-video'),
+('dif', 'video/x-dv', 'mime-type-video.png', 'far file-excel'),
+('webm', 'video/webm', 'mime-type-video.png', 'far file-video'),
+('f4v', 'video/x-f4v', 'mime-type-video.png', 'far file-video'),
+('fli', 'video/x-fli', 'mime-type-video.png', 'far file-video'),
+('flv', 'video/x-flv', 'mime-type-video.png', 'far file-video'),
+('mkv', 'video/x-matroska', 'mime-type-video.png', 'far file-video'),
+('mk3d', 'video/x-matroska', 'mime-type-video.png', 'far file-video'),
+('mks', 'video/x-matroska', 'mime-type-video.png', 'far file-video'),
+('mng', 'video/x-mng', 'mime-type-video.png', 'far file-video'),
+('asf', 'video/x-ms-asf', 'mime-type-video.png', 'far file-video'),
+('asx', 'video/x-ms-asf', 'mime-type-video.png', 'far file-video'),
+('vob', 'video/x-ms-vob', 'mime-type-video.png', 'far file-video'),
+('wm', 'video/x-ms-wm', 'mime-type-video.png', 'far file-video'),
+('wmv', 'video/x-ms-wmv', 'mime-type-video.png', 'far file-video'),
+('wmx', 'video/x-ms-wmx', 'mime-type-video.png', 'far file-video'),
+('wvx', 'video/x-ms-wvx', 'mime-type-video.png', 'far file-video'),
+('avi', 'video/x-msvideo', 'mime-type-video.png', 'far file-video'),
+('movie', 'video/x-sgi-movie', 'mime-type-video.png', 'far file-video'),
+('smv', 'video/x-smv', 'mime-type-video.png', 'far file-video'),
 ('ice', 'x-conference/x-cooltalk', '', '');
 
 
@@ -3559,14 +3559,14 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 
 -- notifications menu in account popup
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
-('sys_account_notifications', 'system', 'dashboard', '_sys_menu_item_title_system_dashboard', '_sys_menu_item_title_dashboard', 'page.php?i=dashboard', '', '', 'dashboard', '', '', 2147483646, 1, 1, 1),
+('sys_account_notifications', 'system', 'dashboard', '_sys_menu_item_title_system_dashboard', '_sys_menu_item_title_dashboard', 'page.php?i=dashboard', '', '', 'tachometer-alt', '', '', 2147483646, 1, 1, 1),
 ('sys_account_notifications', 'system', 'profile', '_sys_menu_item_title_system_profile', '_sys_menu_item_title_profile', '{member_url}', '', '', 'user', '', '', 2147483644, 1, 1, 2),
 ('sys_account_notifications', 'system', 'account-settings', '_sys_menu_item_title_system_account_settings', '_sys_menu_item_title_account_settings', 'page.php?i=account-settings-email', '', '', 'cog', '', '', 2147483646, 1, 1, 3),
 ('sys_account_notifications', 'system', 'add-content', '_sys_menu_item_title_system_add_content', '_sys_menu_item_title_add_content', 'javascript:void(0);', 'bx_menu_slide_inline(\'#bx-sliding-menu-sys_add_content\', $(\'bx-menu-toolbar-item-add-content a\').get(0), \'site\');', '', 'plus', '', '', 2147483646, 1, 1, 4),
 ('sys_account_notifications', 'system', 'studio', '_sys_menu_item_title_system_studio', '_sys_menu_item_title_studio', '{studio_url}', '', '', 'wrench', '', '', 2147483646, 1, 0, 5),
 ('sys_account_notifications', 'system', 'cart', '_sys_menu_item_title_system_cart', '_sys_menu_item_title_cart', 'cart.php', '', '', 'cart-plus col-red3', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_cart_items_count";s:6:"params";a:0:{}s:5:"class";s:21:"TemplPaymentsServices";}', '', 2147483646, 1, 1, 6),
 ('sys_account_notifications', 'system', 'orders', '_sys_menu_item_title_system_orders', '_sys_menu_item_title_orders', 'orders.php', '', '', 'cart-arrow-down col-green3', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:16:"get_orders_count";s:6:"params";a:1:{i:0;s:3:"new";}s:5:"class";s:21:"TemplPaymentsServices";}', '', 2147483646, 0, 1, 7),
-('sys_account_notifications', 'system', 'logout', '_sys_menu_item_title_system_logout', '_sys_menu_item_title_logout', 'logout.php', '', '', 'sign-out', '', '', 2147483646, 1, 1, 9999);
+('sys_account_notifications', 'system', 'logout', '_sys_menu_item_title_system_logout', '_sys_menu_item_title_logout', 'logout.php', '', '', 'sign-out-alt', '', '', 2147483646, 1, 1, 9999);
 
 -- account settings 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
@@ -3582,14 +3582,14 @@ INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `tit
 
 -- account dashboard
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
-('sys_account_dashboard', 'system', 'dashboard', '_sys_menu_item_title_system_account_dashboard', '_sys_menu_item_title_account_dashboard', 'page.php?i=dashboard', '', '', 'dashboard', '', '', 2147483646, 1, 1, 1),
+('sys_account_dashboard', 'system', 'dashboard', '_sys_menu_item_title_system_account_dashboard', '_sys_menu_item_title_account_dashboard', 'page.php?i=dashboard', '', '', 'tachometer-alt', '', '', 2147483646, 1, 1, 1),
 ('sys_account_dashboard', 'system', 'dashboard-subscriptions', '_sys_menu_item_title_system_subscriptions', '_sys_menu_item_title_subscriptions', 'subscriptions.php', '', '', 'money col-blue3', '', '', 2147483646, 1, 1, 2),
 ('sys_account_dashboard', 'system', 'dashboard-orders', '_sys_menu_item_title_system_orders', '_sys_menu_item_title_orders', 'orders.php', '', '', 'cart-arrow-down col-green3', '', '', 2147483646, 1, 1, 3);
 
 -- comment manage 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
 ('sys_cmts_item_manage', 'system', 'item-report', '_sys_menu_item_title_system_cmts_item_report', '', 'javascript:void(0)', '', '', '', '', 2147483647, 1, 0, 0),
-('sys_cmts_item_manage', 'system', 'item-edit', '_sys_menu_item_title_system_cmts_item_edit', '_sys_menu_item_title_cmts_item_edit', 'javascript:void(0)', 'javascript:{js_object}.cmtEdit(this, {content_id})', '_self', 'pencil', '', 2147483647, 1, 0, 0),
+('sys_cmts_item_manage', 'system', 'item-edit', '_sys_menu_item_title_system_cmts_item_edit', '_sys_menu_item_title_cmts_item_edit', 'javascript:void(0)', 'javascript:{js_object}.cmtEdit(this, {content_id})', '_self', 'pencil-alt', '', 2147483647, 1, 0, 0),
 ('sys_cmts_item_manage', 'system', 'item-delete', '_sys_menu_item_title_system_cmts_item_delete', '_sys_menu_item_title_cmts_item_delete', 'javascript:void(0)', 'javascript:{js_object}.cmtRemove(this, {content_id})', '_self', 'remove', '', 2147483647, 1, 0, 0);
 
 -- comment actions menu
@@ -3600,10 +3600,10 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 
 -- social sharing 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
-('sys_social_sharing', 'system', 'social-sharing-facebook', '_sys_menu_item_title_system_social_sharing_facebook', '_sys_menu_item_title_social_sharing_facebook', 'https://www.facebook.com/sharer/sharer.php?u={url_encoded}', '', '_blank', 'facebook', '', 2147483647, 1, 1, 1),
-('sys_social_sharing', 'system', 'social-sharing-googleplus', '_sys_menu_item_title_system_social_sharing_googleplus', '_sys_menu_item_title_social_sharing_googleplus', 'https://plus.google.com/share?url={url_encoded}', '', '_blank', 'google-plus', '', 2147483647, 1, 1, 2),
-('sys_social_sharing', 'system', 'social-sharing-twitter', '_sys_menu_item_title_system_social_sharing_twitter', '_sys_menu_item_title_social_sharing_twitter', 'https://twitter.com/share?url={url_encoded}', '', '_blank', 'twitter', '', 2147483647, 1, 1, 3),
-('sys_social_sharing', 'system', 'social-sharing-pinterest', '_sys_menu_item_title_system_social_sharing_pinterest', '_sys_menu_item_title_social_sharing_pinterest', 'http://pinterest.com/pin/create/button/?url={url_encoded}&media={img_url_encoded}&description={title_encoded}', '', '_blank', 'pinterest', '', 2147483647, 1, 1, 4);
+('sys_social_sharing', 'system', 'social-sharing-facebook', '_sys_menu_item_title_system_social_sharing_facebook', '_sys_menu_item_title_social_sharing_facebook', 'https://www.facebook.com/sharer/sharer.php?u={url_encoded}', '', '_blank', 'fab facebook-f', '', 2147483647, 1, 1, 1),
+('sys_social_sharing', 'system', 'social-sharing-googleplus', '_sys_menu_item_title_system_social_sharing_googleplus', '_sys_menu_item_title_social_sharing_googleplus', 'https://plus.google.com/share?url={url_encoded}', '', '_blank', 'fab google-plus-g', '', 2147483647, 1, 1, 2),
+('sys_social_sharing', 'system', 'social-sharing-twitter', '_sys_menu_item_title_system_social_sharing_twitter', '_sys_menu_item_title_social_sharing_twitter', 'https://twitter.com/share?url={url_encoded}', '', '_blank', 'fab twitter', '', 2147483647, 1, 1, 3),
+('sys_social_sharing', 'system', 'social-sharing-pinterest', '_sys_menu_item_title_system_social_sharing_pinterest', '_sys_menu_item_title_social_sharing_pinterest', 'http://pinterest.com/pin/create/button/?url={url_encoded}&media={img_url_encoded}&description={title_encoded}', '', '_blank', 'fab pinterest', '', 2147483647, 1, 1, 4);
 
 -- dashboard manage tools
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
@@ -3794,56 +3794,56 @@ CREATE TABLE IF NOT EXISTS `sys_grid_actions` (
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 ('sys_studio_lang_keys', 'bulk', 'delete', '_adm_pgt_btn_delete', '', 1, 1),
-('sys_studio_lang_keys', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_lang_keys', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_lang_keys', 'single', 'delete', '', 'remove', 1, 2),
 ('sys_studio_lang_keys', 'independent', 'add', '_adm_pgt_btn_add_new_key', '', 0, 1),
 
-('sys_studio_lang_etemplates', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_lang_etemplates', 'single', 'edit', '', 'pencil-alt', 0, 1),
 
 ('sys_studio_acl', 'independent', 'add', '_adm_prm_btn_add_level', '', 0, 1),
-('sys_studio_acl', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_acl', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_acl', 'single', 'delete', '', 'remove', 1, 2),
 
 ('sys_studio_acl_actions', 'single', 'options', '', 'cog', 0, 1),
 
 ('sys_studio_nav_menus', 'independent', 'add', '_adm_nav_btn_menus_create', '', 0, 1),
-('sys_studio_nav_menus', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_nav_menus', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_nav_menus', 'single', 'delete', '', 'remove', 1, 2),
 
 ('sys_studio_nav_sets', 'independent', 'add', '_adm_nav_btn_sets_create', '', 0, 1),
-('sys_studio_nav_sets', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_nav_sets', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_nav_sets', 'single', 'delete', '', 'remove', 1, 2),
 
 ('sys_studio_nav_items', 'independent', 'import', '_adm_nav_btn_items_gl_import', '', 0, 1),
 ('sys_studio_nav_items', 'independent', 'add', '_adm_nav_btn_items_gl_create', '', 0, 2),
-('sys_studio_nav_items', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_nav_items', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_nav_items', 'single', 'delete', '', 'remove', 1, 2),
 ('sys_studio_nav_items', 'single', 'show_to', '_adm_nav_btn_items_gl_visible', '', 0, 3),
 
 ('sys_studio_nav_import', 'single', 'import', '', 'plus', 0, 1),
 ('sys_studio_nav_import', 'bulk', 'done', '_adm_nav_btn_items_done', '', 0, 1),
 
-('sys_studio_forms', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_forms', 'single', 'edit', '', 'pencil-alt', 0, 1),
 
-('sys_studio_forms_displays', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_forms_displays', 'single', 'edit', '', 'pencil-alt', 0, 1),
 
-('sys_studio_forms_fields', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_forms_fields', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_forms_fields', 'single', 'delete', '', 'remove', 1, 2),
 ('sys_studio_forms_fields', 'single', 'show_to', '_adm_form_btn_fields_visible', '', 0, 3),
 ('sys_studio_forms_fields', 'independent', 'add', '_adm_form_btn_fields_create', '', 0, 1),
 
 ('sys_studio_forms_pre_lists', 'independent', 'add', '_adm_form_btn_pre_lists_create', '', 0, 1),
-('sys_studio_forms_pre_lists', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_forms_pre_lists', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_forms_pre_lists', 'single', 'delete', '', 'remove', 1, 2),
 
 ('sys_studio_forms_pre_values', 'independent', 'add', '_adm_form_btn_pre_values_create', '', 0, 1),
-('sys_studio_forms_pre_values', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_forms_pre_values', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_forms_pre_values', 'single', 'delete', '', 'remove', 1, 2),
 ('sys_studio_forms_pre_values', 'bulk', 'delete', '_adm_form_btn_pre_values_delete', '', 1, 1),
 
-('sys_studio_search_forms', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_search_forms', 'single', 'edit', '', 'pencil-alt', 0, 1),
 
-('sys_studio_search_forms_fields', 'single', 'edit', '', 'pencil', 0, 1),
+('sys_studio_search_forms_fields', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('sys_studio_search_forms_fields', 'independent', 'reset', '_adm_form_btn_search_forms_fields_reset', '', 0, 1);
 
 -- GRIDS: moderation tools

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

@@ -18,11 +18,11 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) 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_accounts_menu_manage_tools', @sName, 'edit-email', '_bx_accnt_menu_item_title_system_edit_email', '_bx_accnt_menu_item_title_edit_email', 'javascript:void(0)', 'javascript:{js_object}.onClickEditEmail({content_id}, this);', '_self', 'at', '', 192, 1, 0, 1),
-('bx_accounts_menu_manage_tools', @sName, 'resend-cemail', '_bx_accnt_menu_item_title_system_resend_cemail', '_bx_accnt_menu_item_title_resend_cemail', 'javascript:void(0)', 'javascript:{js_object}.onClickResendCemail({content_id}, this);', '_self', 'envelope-o', '', 192, 1, 0, 2),
+('bx_accounts_menu_manage_tools', @sName, 'resend-cemail', '_bx_accnt_menu_item_title_system_resend_cemail', '_bx_accnt_menu_item_title_resend_cemail', 'javascript:void(0)', 'javascript:{js_object}.onClickResendCemail({content_id}, this);', '_self', 'far envelope', '', 192, 1, 0, 2),
 ('bx_accounts_menu_manage_tools', @sName, 'reset-password', '_bx_accnt_menu_item_title_system_reset_password', '_bx_accnt_menu_item_title_reset_password', 'javascript:void(0)', 'javascript:{js_object}.onClickResetPassword({content_id}, this);', '_self', 'eraser', '', 192, 1, 0, 3),
 ('bx_accounts_menu_manage_tools', @sName, 'unlock-account', '_bx_accnt_menu_item_title_system_unlock_account', '_bx_accnt_menu_item_title_unlock_account', 'javascript:void(0)', 'javascript:{js_object}.onClickUnlockAccount({content_id}, this);', '_self', 'unlock', '', 192, 1, 0, 4),
-('bx_accounts_menu_manage_tools', @sName, 'delete', '_bx_accnt_menu_item_title_system_delete', '_bx_accnt_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id}, this);', '_self', 'trash-o', '', 192, 1, 0, 5),
-('bx_accounts_menu_manage_tools', @sName, 'delete-with-content', '_bx_accnt_menu_item_title_system_delete_with_content', '_bx_accnt_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id}, this);', '_self', 'trash-o', '', 192, 1, 0, 6),
+('bx_accounts_menu_manage_tools', @sName, 'delete', '_bx_accnt_menu_item_title_system_delete', '_bx_accnt_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id}, this);', '_self', 'far trash-alt', '', 192, 1, 0, 5),
+('bx_accounts_menu_manage_tools', @sName, 'delete-with-content', '_bx_accnt_menu_item_title_system_delete_with_content', '_bx_accnt_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id}, this);', '_self', 'far trash-alt', '', 192, 1, 0, 6),
 ('bx_accounts_menu_manage_tools', @sName, 'make-operator', '_bx_accnt_menu_item_title_system_make_operator', '_bx_accnt_menu_item_title_make_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickMakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 7),
 ('bx_accounts_menu_manage_tools', @sName, 'unmake-operator', '_bx_accnt_menu_item_title_system_unmake_operator', '_bx_accnt_menu_item_title_unmake_operator', 'javascript:void(0)', 'javascript:{js_object}.onClickUnmakeOperator({content_id}, this);', '_self', 'wrench', '', 192, 1, 0, 8);
 

+ 1 - 1
modules/boonex/acl/install/sql/enable.sql

@@ -12,7 +12,7 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `t
 -- MENU: account settings menu
 SET @iMoAccountSettings = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_settings' AND `order` < 9999 LIMIT 1);
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES
-('sys_account_settings', 'bx_acl', 'acl-view', '_bx_acl_menu_item_title_system_acl_view', '_bx_acl_menu_item_title_acl_view', 'page.php?i=acl-view', '', '', 'shield col-red2', '', '', 2147483646, 1, 0, 1, @iMoAccountSettings + 1);
+('sys_account_settings', 'bx_acl', 'acl-view', '_bx_acl_menu_item_title_system_acl_view', '_bx_acl_menu_item_title_acl_view', 'page.php?i=acl-view', '', '', 'shield-alt col-red2', '', '', 2147483646, 1, 0, 1, @iMoAccountSettings + 1);
 
 
 -- SETTINGS

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

@@ -93,13 +93,13 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
 ('bx_acl_administration', 'independent', 'add', '_bx_acl_grid_action_add', '', 0, 0, 1),
-('bx_acl_administration', 'single', 'edit', '_bx_acl_grid_action_edit', 'pencil', 1, 0, 1),
+('bx_acl_administration', 'single', 'edit', '_bx_acl_grid_action_edit', 'pencil-alt', 1, 0, 1),
 ('bx_acl_administration', 'single', 'delete', '_bx_acl_grid_action_delete', 'remove', 1, 1, 2),
 ('bx_acl_administration', 'bulk', 'delete', '_bx_acl_grid_action_delete', '', 0, 1, 1),
 
 ('bx_acl_view', 'single', 'buy', '_bx_acl_grid_action_buy', 'cart-plus', 0, 0, 1),
 ('bx_acl_view', 'single', 'subscribe', '_bx_acl_grid_action_subscribe', 'credit-card', 0, 0, 2),
-('bx_acl_view', 'single', 'choose', '_bx_acl_grid_action_choose', 'check-square-o', 0, 0, 3);
+('bx_acl_view', 'single', 'choose', '_bx_acl_grid_action_choose', 'far check-square', 0, 0, 3);
 
 
 -- STUDIO PAGE & WIDGET

+ 13 - 13
modules/boonex/albums/install/sql/enable.sql

@@ -176,17 +176,17 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `
 -- MENU: add to site menu
 SET @iSiteMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_site' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_site', 'bx_albums', 'albums-home', '_bx_albums_menu_item_title_system_entries_home', '_bx_albums_menu_item_title_entries_home', 'page.php?i=albums-home', '', '', 'picture-o col-blue1', 'bx_albums_submenu', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
+('sys_site', 'bx_albums', 'albums-home', '_bx_albums_menu_item_title_system_entries_home', '_bx_albums_menu_item_title_entries_home', 'page.php?i=albums-home', '', '', 'far image col-blue1', 'bx_albums_submenu', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
 
 -- MENU: add to homepage menu
 SET @iHomepageMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_homepage' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_homepage', 'bx_albums', 'albums-home', '_bx_albums_menu_item_title_system_entries_home', '_bx_albums_menu_item_title_entries_home', 'page.php?i=albums-home', '', '', 'picture-o col-blue1', 'bx_albums_submenu', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
+('sys_homepage', 'bx_albums', 'albums-home', '_bx_albums_menu_item_title_system_entries_home', '_bx_albums_menu_item_title_entries_home', 'page.php?i=albums-home', '', '', 'far image col-blue1', 'bx_albums_submenu', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
 
 -- MENU: add to "add content" menu
 SET @iAddMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_add_content_links' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_add_content_links', 'bx_albums', 'create-album', '_bx_albums_menu_item_title_system_create_entry', '_bx_albums_menu_item_title_create_entry', 'page.php?i=create-album', '', '', 'picture-o col-blue1', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
+('sys_add_content_links', 'bx_albums', 'create-album', '_bx_albums_menu_item_title_system_create_entry', '_bx_albums_menu_item_title_create_entry', 'page.php?i=create-album', '', '', 'far image col-blue1', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
 
 -- MENU: actions menu for view entry 
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
@@ -197,7 +197,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) 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_albums_view', 'bx_albums', 'add-images-to-album', '_bx_albums_menu_item_title_system_add_images', '_bx_albums_menu_item_title_add_images', 'page.php?i=add-images&id={content_id}', '', '', 'plus', '', 2147483647, 1, 0, 10),
-('bx_albums_view', 'bx_albums', 'edit-album', '_bx_albums_menu_item_title_system_edit_entry', '_bx_albums_menu_item_title_edit_entry', 'page.php?i=edit-album&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 20),
+('bx_albums_view', 'bx_albums', 'edit-album', '_bx_albums_menu_item_title_system_edit_entry', '_bx_albums_menu_item_title_edit_entry', 'page.php?i=edit-album&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 20),
 ('bx_albums_view', 'bx_albums', 'delete-album', '_bx_albums_menu_item_title_system_delete_entry', '_bx_albums_menu_item_title_delete_entry', 'page.php?i=delete-album&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 30);
 
 -- MENU: actions menu for view media
@@ -209,7 +209,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) 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_albums_view_media', 'bx_albums', 'add-images-to-album', '_bx_albums_menu_item_title_system_add_images', '_bx_albums_menu_item_title_add_images', 'page.php?i=add-images&id={content_id}', '', '', 'plus', '', 2147483647, 1, 0, 10),
-('bx_albums_view_media', 'bx_albums', 'edit-album', '_bx_albums_menu_item_title_system_edit_album', '_bx_albums_menu_item_title_edit_album', 'page.php?i=edit-album&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 20);
+('bx_albums_view_media', 'bx_albums', 'edit-album', '_bx_albums_menu_item_title_system_edit_album', '_bx_albums_menu_item_title_edit_album', 'page.php?i=edit-album&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 20);
 
 -- MENU: actions menu for my entries
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
@@ -263,7 +263,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 -- 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);
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
-('sys_profile_stats', 'bx_albums', 'profile-stats-manage-albums', '_bx_albums_menu_item_title_system_manage_my_albums', '_bx_albums_menu_item_title_manage_my_albums', 'page.php?i=albums-manage', '', '_self', 'picture-o col-blue1', 'a:2:{s:6:"module";s:9:"bx_albums";s:6:"method";s:41:"get_menu_addon_manage_tools_profile_stats";}', '', 2147483646, 1, 0, @iNotifMenuOrder + 1);
+('sys_profile_stats', 'bx_albums', 'profile-stats-manage-albums', '_bx_albums_menu_item_title_system_manage_my_albums', '_bx_albums_menu_item_title_manage_my_albums', 'page.php?i=albums-manage', '', '_self', 'far image col-blue1', 'a:2:{s:6:"module";s:9:"bx_albums";s:6:"method";s:41:"get_menu_addon_manage_tools_profile_stats";}', '', 2147483646, 1, 0, @iNotifMenuOrder + 1);
 
 -- 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 
@@ -273,7 +273,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_albums_menu_manage_tools', 'bx_albums', '_bx_albums_menu_set_title_manage_tools', 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_albums_menu_manage_tools', 'bx_albums', 'delete-with-content', '_bx_albums_menu_item_title_system_delete_with_content', '_bx_albums_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'trash-o', '', 128, 1, 0, 0);
+--('bx_albums_menu_manage_tools', 'bx_albums', 'delete-with-content', '_bx_albums_menu_item_title_system_delete_with_content', '_bx_albums_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 128, 1, 0, 0);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -282,8 +282,8 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 
 -- MENU: add menu item to profiles modules (trigger* menu sets are processed separately upon modules enable/disable)
 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 
-('trigger_profile_view_submenu', 'bx_albums', 'albums-author', '_bx_albums_menu_item_title_system_view_entries_author', '_bx_albums_menu_item_title_view_entries_author', 'page.php?i=albums-author&profile_id={profile_id}', '', '', 'picture-o col-blue1', '', 2147483647, 1, 0, 0),
-('trigger_group_view_submenu', 'bx_albums', 'albums-context', '_bx_albums_menu_item_title_system_view_entries_in_context', '_bx_albums_menu_item_title_view_entries_in_context', 'page.php?i=albums-context&profile_id={profile_id}', '', '', 'picture-o col-blue1', '', 2147483647, 1, 0, 0);
+('trigger_profile_view_submenu', 'bx_albums', 'albums-author', '_bx_albums_menu_item_title_system_view_entries_author', '_bx_albums_menu_item_title_view_entries_author', 'page.php?i=albums-author&profile_id={profile_id}', '', '', 'far image col-blue1', '', 2147483647, 1, 0, 0),
+('trigger_group_view_submenu', 'bx_albums', 'albums-context', '_bx_albums_menu_item_title_system_view_entries_in_context', '_bx_albums_menu_item_title_view_entries_in_context', 'page.php?i=albums-context&profile_id={profile_id}', '', '', 'far image col-blue1', '', 2147483647, 1, 0, 0);
 
 
 -- PRIVACY 
@@ -377,8 +377,8 @@ INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations
 -- STATS
 SET @iMaxOrderStats = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_statistics`);
 INSERT INTO `sys_statistics` (`module`, `name`, `title`, `link`, `icon`, `query`, `order`) VALUES 
-('bx_albums', 'bx_albums', '_bx_albums', 'page.php?i=albums-home', 'picture-o col-blue1', 'SELECT COUNT(*) FROM `bx_albums_albums` WHERE 1 AND `status` = ''active'' AND `status_admin` = ''active''', @iMaxOrderStats + 1),
-('bx_albums', 'bx_albums_media', '_bx_albums_media', '', 'picture-o col-blue1', 'SELECT COUNT(*) FROM `bx_albums_files` WHERE 1', @iMaxOrderStats + 2);
+('bx_albums', 'bx_albums', '_bx_albums', 'page.php?i=albums-home', 'far image col-blue1', 'SELECT COUNT(*) FROM `bx_albums_albums` WHERE 1 AND `status` = ''active'' AND `status_admin` = ''active''', @iMaxOrderStats + 1),
+('bx_albums', 'bx_albums_media', '_bx_albums_media', '', 'far image col-blue1', 'SELECT COUNT(*) FROM `bx_albums_files` WHERE 1', @iMaxOrderStats + 2);
 
 
 -- CHARTS
@@ -411,11 +411,11 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
 ('bx_albums_administration', 'bulk', 'delete', '_bx_albums_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_albums_administration', 'single', 'edit', '_bx_albums_grid_action_title_adm_edit', 'pencil', 1, 0, 1),
+('bx_albums_administration', 'single', 'edit', '_bx_albums_grid_action_title_adm_edit', 'pencil-alt', 1, 0, 1),
 ('bx_albums_administration', 'single', 'delete', '_bx_albums_grid_action_title_adm_delete', 'remove', 1, 1, 2),
 ('bx_albums_administration', 'single', 'settings', '_bx_albums_grid_action_title_adm_more_actions', 'cog', 1, 0, 3),
 ('bx_albums_common', 'bulk', 'delete', '_bx_albums_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_albums_common', 'single', 'edit', '_bx_albums_grid_action_title_adm_edit', 'pencil', 1, 0, 1),
+('bx_albums_common', 'single', 'edit', '_bx_albums_grid_action_title_adm_edit', 'pencil-alt', 1, 0, 1),
 ('bx_albums_common', 'single', 'delete', '_bx_albums_grid_action_title_adm_delete', 'remove', 1, 1, 2),
 ('bx_albums_common', 'single', 'settings', '_bx_albums_grid_action_title_adm_more_actions', 'cog', 1, 0, 3);
 

+ 1 - 1
modules/boonex/antispam/classes/BxAntispamStudioPage.php

@@ -23,7 +23,7 @@ class BxAntispamStudioPage extends BxTemplStudioModule
             array('name' => 'settings', 'icon' => 'cogs', 'title' => '_adm_lmi_cpt_settings'),
             array('name' => 'ip_table', 'icon' => 'align-justify', 'title' => '_bx_antispam_ip_table', 'link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=antispam-ip-table')),
             array('name' => 'dnsbl_list', 'icon' => 'align-justify', 'title' => '_bx_antispam_dnsbl_list', 'link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=antispam-dnsbl-list')),
-            array('name' => 'block_log', 'icon' => 'clock-o', 'title' => '_bx_antispam_block_log', 'link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=antispam-block-log')),
+            array('name' => 'block_log', 'icon' => 'far clock', 'title' => '_bx_antispam_block_log', 'link' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=antispam-block-log')),
             array('name' => 'help', 'icon' => 'question', 'title' => '_bx_antispam_help'),
         );
     }

+ 1 - 1
modules/boonex/antispam/install/sql/enable.sql

@@ -125,7 +125,7 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `or
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 ('bx_antispam_grid_ip_table', 'bulk', 'delete', '_bx_antispam_grid_action_delete', '', 1, 1),
-('bx_antispam_grid_ip_table', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_antispam_grid_ip_table', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('bx_antispam_grid_ip_table', 'single', 'delete', '', 'remove',  1, 2),
 ('bx_antispam_grid_ip_table', 'independent', 'add', '_bx_antispam_grid_action_add', '', 0, 1);
 

+ 21 - 0
modules/boonex/channels/classes/BxCnlAlertsResponse.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlAlertsResponse extends BxBaseModGroupsAlertsResponse
+{
+    public function __construct()
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct();
+    }
+}
+
+/** @} */

+ 203 - 0
modules/boonex/channels/classes/BxCnlConfig.php

@@ -0,0 +1,203 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlConfig extends BxBaseModProfileConfig
+{
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+
+        $aMenuItems2Methods = array (
+            'view-channel-profile' => 'checkAllowedView',
+            'edit-channel-profile' => 'checkAllowedEdit',
+            'edit-channel-cover' => 'checkAllowedChangeCover',
+            'invite-to-channel' => 'checkAllowedInvite',
+            'delete-channel-profile' => 'checkAllowedDelete',
+            'profile-fan-add' => 'checkAllowedFanAdd',
+            'profile-fan-remove' => 'checkAllowedFanRemove',
+            'profile-subscribe-add' => 'checkAllowedSubscribeAdd',
+            'profile-subscribe-remove' => 'checkAllowedSubscribeRemove',
+            'profile-actions-more' => 'checkAllowedViewMoreMenu',
+            'convos-compose' => 'checkAllowedCompose',
+        );
+
+        $this->CNF = array (
+
+            // module icon
+            'ICON' => 'hubspot col-red2',
+
+            // database tables
+            'TABLE_ENTRIES' => $aModule['db_prefix'] . 'data',
+            'TABLE_ENTRIES_FULLTEXT' => 'search_fields',
+            'TABLE_ADMINS' => $aModule['db_prefix'] . 'admins',
+
+            // database fields
+            'FIELD_ID' => 'id',
+            'FIELD_AUTHOR' => 'author',
+            'FIELD_ADDED' => 'added',
+            'FIELD_CHANGED' => 'changed',
+            'FIELD_NAME' => 'channel_name',
+            'FIELD_TITLE' => 'channel_name',
+            'FIELD_PICTURE' => 'picture',
+            'FIELD_COVER' => 'cover',
+            'FIELD_JOIN_CONFIRMATION' => 'join_confirmation',
+            'FIELD_ALLOW_VIEW_TO' => 'allow_view_to',
+            'FIELD_VIEWS' => 'views',
+            'FIELD_COMMENTS' => 'comments',
+            'FIELDS_QUICK_SEARCH' => array('channel_name'),
+            'FIELDS_WITH_KEYWORDS' => 'auto', // can be 'auto', array of fields or comma separated string of field names, works only when OBJECT_METATAGS is specified
+
+            // page URIs
+            'URI_VIEW_ENTRY' => 'view-channel-profile',
+            'URI_EDIT_ENTRY' => 'edit-channel-profile',
+            'URI_EDIT_COVER' => 'edit-channel-cover',
+            'URI_JOINED_ENTRIES' => 'joined-channels',
+            'URI_MANAGE_COMMON' => 'channels-manage',
+
+            'URL_HOME' => 'page.php?i=channels-home',
+            'URL_MANAGE_COMMON' => 'page.php?i=channels-manage',
+            'URL_MANAGE_ADMINISTRATION' => 'page.php?i=channels-administration',
+
+            'PARAM_NUM_RSS' => 'bx_channels_num_rss',
+            'PARAM_NUM_CONNECTIONS_QUICK' => 'bx_channels_num_connections_quick',
+
+            'PARAM_SEARCHABLE_FIELDS' => 'bx_channels_searchable_fields',
+            'PARAM_PER_PAGE_BROWSE_SHOWCASE' => 'bx_channels_per_page_browse_showcase',
+            'PARAM_PER_PAGE_BROWSE_RECOMMENDED' => 'bx_channels_per_page_browse_recommended',
+
+            // objects
+            'OBJECT_STORAGE' => 'bx_channels_pics',
+            'OBJECT_STORAGE_COVER' => 'bx_channels_pics',
+            'OBJECT_IMAGES_TRANSCODER_THUMB' => 'bx_channels_thumb',
+            'OBJECT_IMAGES_TRANSCODER_ICON' => 'bx_channels_icon',
+            'OBJECT_IMAGES_TRANSCODER_AVATAR' => 'bx_channels_avatar',
+            'OBJECT_IMAGES_TRANSCODER_PICTURE' => 'bx_channels_picture',
+            'OBJECT_IMAGES_TRANSCODER_COVER' => 'bx_channels_cover',
+            'OBJECT_IMAGES_TRANSCODER_COVER_THUMB' => 'bx_channels_cover_thumb',
+            'OBJECT_IMAGES_TRANSCODER_GALLERY' => 'bx_channels_gallery',
+            'OBJECT_VIEWS' => 'bx_channels',
+            'OBJECT_VOTES' => 'bx_channels',
+            'OBJECT_SCORES' => 'bx_channels',
+            'OBJECT_FAVORITES' => 'bx_channels',
+            'OBJECT_FEATURED' => 'bx_channels',
+            'OBJECT_COMMENTS' => 'bx_channels',
+            'OBJECT_REPORTS' => 'bx_channels',
+            'OBJECT_METATAGS' => 'bx_channels',
+            'OBJECT_FORM_ENTRY' => 'bx_channel',
+            'OBJECT_FORM_ENTRY_DISPLAY_VIEW' => 'bx_channel_view',
+            'OBJECT_FORM_ENTRY_DISPLAY_VIEW_FULL' => 'bx_channel_view_full', // for "info" tab on view channel page
+            'OBJECT_FORM_ENTRY_DISPLAY_ADD' => 'bx_channel_add',
+            'OBJECT_FORM_ENTRY_DISPLAY_EDIT' => 'bx_channel_edit',
+            'OBJECT_FORM_ENTRY_DISPLAY_EDIT_COVER' => 'bx_channel_edit_cover',
+            'OBJECT_FORM_ENTRY_DISPLAY_DELETE' => 'bx_channel_delete',
+            'OBJECT_FORM_ENTRY_DISPLAY_INVITE' => 'bx_channel_invite',
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY' => 'bx_channels_view_actions', // actions menu on view entry page
+            'OBJECT_MENU_ACTIONS_VIEW_ENTRY_MORE' => 'bx_channels_view_actions_more', // actions menu on view entry page for "more" popup
+            'OBJECT_MENU_ACTIONS_MY_ENTRIES' => 'bx_channels_my', // actions menu on profile entries page
+            'OBJECT_MENU_SUBMENU' => 'bx_channels_submenu', // main module submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY' => 'bx_channels_view_submenu',  // view entry submenu
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY_COVER' => 'bx_channels_view_submenu_cover',  // view entry submenu displayed in cover
+            'OBJECT_MENU_SUBMENU_VIEW_ENTRY_MAIN_SELECTION' => 'channels-home', // first item in view entry submenu from main module submenu
+            'OBJECT_MENU_SNIPPET_META' => 'bx_channels_snippet_meta', // menu for snippet meta info
+            'OBJECT_MENU_MANAGE_TOOLS' => 'bx_channels_menu_manage_tools', //manage menu in content administration tools
+            'OBJECT_PAGE_VIEW_ENTRY' => 'bx_channels_view_profile',
+            'OBJECT_PAGE_VIEW_ENTRY_CLOSED' => 'bx_channels_view_profile_closed',
+            'OBJECT_PRIVACY_VIEW' => 'bx_channels_allow_view_to',
+            'OBJECT_PRIVACY_VIEW_NOTIFICATION_EVENT' => 'bx_channels_allow_view_notification_to',
+            'OBJECT_GRID_ADMINISTRATION' => 'bx_channels_administration',
+            'OBJECT_GRID_COMMON' => 'bx_channels_common',
+            'OBJECT_GRID_CONNECTIONS' => 'bx_channels_fans',
+            'OBJECT_CONNECTIONS' => 'bx_channels_fans',
+            'OBJECT_UPLOADERS_COVER' => array('bx_channels_cover_crop'),
+            'OBJECT_UPLOADERS_PICTURE' => array('bx_channels_picture_crop'),
+
+            'EMAIL_INVITATION' => 'bx_channels_invitation',
+            'EMAIL_JOIN_REQUEST' => 'bx_channels_join_request',
+            'EMAIL_JOIN_CONFIRM' => 'bx_channels_join_confirm',
+            'EMAIL_FAN_BECOME_ADMIN' => 'bx_channels_fan_become_admin',
+            'EMAIL_ADMIN_BECOME_FAN' => 'bx_channels_admin_become_fan',
+            'EMAIL_FAN_REMOVE' => 'bx_channels_fan_remove',
+            'EMAIL_JOIN_REJECT' => 'bx_channels_join_reject',
+
+            'TRIGGER_MENU_PROFILE_VIEW_SUBMENU' => 'trigger_group_view_submenu',
+            'TRIGGER_MENU_PROFILE_VIEW_ACTIONS' => 'trigger_group_view_actions',
+            'TRIGGER_PAGE_VIEW_ENTRY' => 'trigger_page_group_view_entry',
+
+            // menu items which visibility depends on custom visibility checking
+            'MENU_ITEM_TO_METHOD' => array (
+                'bx_channels_view_actions' => $aMenuItems2Methods,
+                'bx_channels_view_actions_more' => $aMenuItems2Methods,
+            ),
+
+            // informer messages
+            'INFORMERS' => array (
+                'status' => array (
+                    'name' => 'bx-channels-status-not-active',
+                    'map' => array (
+                        BX_PROFILE_STATUS_PENDING => '_bx_channels_txt_account_pending',
+                        BX_PROFILE_STATUS_SUSPENDED => '_bx_channels_txt_account_suspended',
+                    ),
+                ),
+            ),
+
+            // some language keys
+            'T' => array (
+                'txt_sample_single' => '_bx_channels_txt_sample_single',
+                'txt_sample_single_with_article' => '_bx_channels_txt_sample_single_with_article',
+                'txt_sample_comment_single' => '_bx_channels_txt_sample_comment_single',
+                'txt_sample_vote_single' => '_bx_channels_txt_sample_vote_single',
+                'txt_private_group' => '_bx_channels_txt_private_channel',
+                'txt_N_fans' => '_bx_channels_txt_N_fans',
+                'txt_ntfs_join_request' => '_bx_channels_txt_ntfs_join_request',
+                'txt_ntfs_fan_added' => '_bx_channels_txt_ntfs_fan_added',
+                'txt_ntfs_timeline_post_common' => '_bx_channels_txt_ntfs_timeline_post_common',
+                'form_field_author' => '_bx_channels_form_entry_input_author',
+                'menu_item_title_befriend_sent' => '_bx_channels_menu_item_title_befriend_sent',
+                'menu_item_title_unfriend_cancel_request' => '_bx_channels_menu_item_title_unfriend_cancel_request',
+                'menu_item_title_befriend_confirm' => '_bx_channels_menu_item_title_befriend_confirm',
+                'menu_item_title_unfriend_reject_request' => '_bx_channels_menu_item_title_unfriend_reject_request',
+                'menu_item_title_befriend' => '_bx_channels_menu_item_title_befriend',
+                'menu_item_title_unfriend' => '_bx_channels_menu_item_title_unfriend',
+                'grid_action_err_delete' => '_bx_channels_grid_action_err_delete',
+                'grid_txt_account_manager' => '_bx_channels_grid_txt_account_manager',
+                'filter_item_active' => '_bx_channels_grid_filter_item_title_adm_active',
+                'filter_item_pending' => '_bx_channels_grid_filter_item_title_adm_pending',
+                'filter_item_suspended' => '_bx_channels_grid_filter_item_title_adm_suspended',
+                'filter_item_select_one_filter1' => '_bx_channels_grid_filter_item_title_adm_select_one_filter1',
+                'menu_item_manage_my' => '_bx_channels_menu_item_title_manage_my',
+                'menu_item_manage_all' => '_bx_channels_menu_item_title_manage_all',
+                'menu_item_title_become_fan_sent' => '_bx_channels_menu_item_title_become_fan_sent',
+                'menu_item_title_leave_group_cancel_request' => '_bx_channels_menu_item_title_leave_channel_cancel_request',
+                'menu_item_title_become_fan' => '_bx_channels_menu_item_title_become_fan',
+                'menu_item_title_leave_group' => '_bx_channels_menu_item_title_leave_channel',
+                'txt_all_entries_by_author' => '_bx_channels_page_title_browse_by_author'
+            ),
+
+        );
+
+        $this->_aJsClasses = array(
+            'manage_tools' => 'BxCnlManageTools'
+        );
+
+        $this->_aJsObjects = array(
+            'manage_tools' => 'oBxCnlManageTools'
+        );
+
+        $this->_aGridObjects = array(
+            'common' => $this->CNF['OBJECT_GRID_COMMON'],
+            'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION'],
+            
+        );
+    }
+
+}
+
+/** @} */

+ 32 - 0
modules/boonex/channels/classes/BxCnlDb.php

@@ -0,0 +1,32 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * Spaces module database queries
+ */
+class BxCnlDb extends BxBaseModGroupsDb
+{
+    public function __construct(&$oConfig)
+    {
+        parent::__construct($oConfig);
+    }
+     
+    public function getChannelIdByName($sName)
+    {
+        $CNF = &$this->_oConfig->CNF;
+        $aBindings = array(
+            'name' => $sName,
+        );
+        return $this->getOne("SELECT `" . $CNF['FIELD_ID'] . "` FROM `" . $CNF['TABLE_ENTRIES'] . "` WHERE `" . $CNF['FIELD_NAME'] . "` = :name", $aBindings);
+    }
+}
+
+/** @} */

+ 24 - 0
modules/boonex/channels/classes/BxCnlFormEntry.php

@@ -0,0 +1,24 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * Create/Edit Space Form.
+ */
+class BxCnlFormEntry extends BxBaseModGroupsFormEntry
+{
+    public function __construct($aInfo, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($aInfo, $oTemplate);
+    }
+}
+
+/** @} */

+ 23 - 0
modules/boonex/channels/classes/BxCnlFormsEntryHelper.php

@@ -0,0 +1,23 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * Spaces profile forms functions
+ */
+class BxCnlFormsEntryHelper extends BxBaseModGroupsFormsEntryHelper
+{
+    public function __construct($oModule)
+    {
+        parent::__construct($oModule);
+    }
+}
+
+/** @} */

+ 21 - 0
modules/boonex/channels/classes/BxCnlGridAdministration.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ * 
+ * @{
+ */
+
+class BxCnlGridAdministration extends BxBaseModGroupsGridAdministration
+{
+    public function __construct ($aOptions, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct ($aOptions, $oTemplate);
+    }
+}
+
+/** @} */

+ 21 - 0
modules/boonex/channels/classes/BxCnlGridConnections.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ * 
+ * @{
+ */
+
+class BxCnlGridConnections extends BxBaseModGroupsGridConnections
+{
+    public function __construct ($aOptions, $oTemplate = false)
+    {
+        $this->_sContentModule = 'bx_channels';
+        parent::__construct ($aOptions, $oTemplate);
+    }
+}
+
+/** @} */

+ 24 - 0
modules/boonex/channels/classes/BxCnlMenu.php

@@ -0,0 +1,24 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * General class for module menu.
+ */
+class BxCnlMenu extends BxBaseModGeneralMenuView
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 25 - 0
modules/boonex/channels/classes/BxCnlMenuManageTools.php

@@ -0,0 +1,25 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * 'Spaces manage tools' menu.
+ */
+class BxCnlMenuManageTools extends BxBaseModGroupsMenuManageTools
+{
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 25 - 0
modules/boonex/channels/classes/BxCnlMenuSnippetMeta.php

@@ -0,0 +1,25 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlMenuSnippetMeta extends BxBaseModGroupsMenuSnippetMeta
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->_sModule = 'bx_channels';
+
+        parent::__construct($aObject, $oTemplate);
+
+        unset($this->_aConnectionToFunctionCheck['sys_profiles_friends']);
+        unset($this->_aConnectionToFunctionTitle['sys_profiles_friends']);
+    }
+}
+
+/** @} */

+ 25 - 0
modules/boonex/channels/classes/BxCnlMenuView.php

@@ -0,0 +1,25 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * 'View channel' menu.
+ */
+class BxCnlMenuView extends BxBaseModGroupsMenuView
+{
+
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 47 - 0
modules/boonex/channels/classes/BxCnlModule.php

@@ -0,0 +1,47 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * Spaces profiles module.
+ */
+
+class BxCnlModule extends BxBaseModGroupsModule
+{
+    function __construct(&$aModule)
+    {
+        parent::__construct($aModule);
+       
+        $this->_aSearchableNamesExcept[] = $this->_oConfig->CNF['FIELD_JOIN_CONFIRMATION'];
+    }
+   
+    public function checkAllowedSubscribeAdd (&$aDataEntry, $isPerformAction = false)
+    {
+        return parent::_checkAllowedSubscribeAdd ($aDataEntry, $isPerformAction);
+    }
+    
+    public function actionH($sName)
+    {
+        $iId = $this->_oDb->getChannelIdByName($sName);
+        $_GET['id'] = $iId;
+        $oPage = BxDolPage::getObjectInstance('bx_channels_view_profile');
+        echo $oPage->getCode($sName);
+
+    }
+    
+    function addChannel($sName)
+    {
+        //todo IdProfile
+        $CNF = &$this->_oConfig->CNF;
+        $this->serviceEntityAdd(6, array($CNF['FIELD_NAME'] => $sName));
+    }
+}
+
+/** @} */

+ 24 - 0
modules/boonex/channels/classes/BxCnlPageBrowse.php

@@ -0,0 +1,24 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * Browse entries pages.
+ */
+class BxCnlPageBrowse extends BxBaseModGroupsPageBrowse
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 24 - 0
modules/boonex/channels/classes/BxCnlPageEntry.php

@@ -0,0 +1,24 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * Profile create/edit/delete pages.
+ */
+class BxCnlPageEntry extends BxBaseModGroupsPageEntry
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 24 - 0
modules/boonex/channels/classes/BxCnlPageJoinedEntries.php

@@ -0,0 +1,24 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/**
+ * Entries user joined to.
+ */
+class BxCnlPageJoinedEntries extends BxBaseModGroupsPageJoinedEntries
+{
+    public function __construct($aObject, $oTemplate = false)
+    {
+        parent::__construct($aObject, $oTemplate);
+    }
+
+}
+
+/** @} */

+ 22 - 0
modules/boonex/channels/classes/BxCnlPrivacy.php

@@ -0,0 +1,22 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlPrivacy extends BxBaseModGroupsPrivacy
+{
+    public function __construct($aOptions, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+
+/** @} */

+ 21 - 0
modules/boonex/channels/classes/BxCnlPrivacyNotifications.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlPrivacyNotifications extends BxBaseModGroupsPrivacyNotifications
+{
+    function __construct($aOptions, $oTemplate = false)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($aOptions, $oTemplate);
+    }
+}
+
+/** @} */

+ 209 - 0
modules/boonex/channels/classes/BxCnlSearchResult.php

@@ -0,0 +1,209 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlSearchResult extends BxBaseModGroupsSearchResult
+{
+    function __construct($sMode = '', $aParams = false)
+    {
+        parent::__construct($sMode, $aParams);
+
+        $this->aCurrent = array(
+            'name' => 'bx_channels',
+            'module_name' => 'bx_channels',
+            'object_metatags' => 'bx_channels',
+            'title' => _t('_bx_channels_page_title_browse'),
+            'table' => 'sys_profiles',
+            'tableSearch' => 'bx_cnl_data',
+            'ownFields' => array(),
+            'searchFields' => array(),
+            'restriction' => array(
+                'account_id' => array('value' => '', 'field' => 'account_id', 'operator' => '='),
+                'perofileStatus' => array('value' => 'active', 'field' => 'status', 'operator' => '='),
+                'perofileType' => array('value' => 'bx_channels', 'field' => 'type', 'operator' => '='),
+                'owner' => array('value' => '', 'field' => 'author', 'operator' => '=', 'table' => 'bx_cnl_data'),
+                'featured' => array('value' => '', 'field' => 'featured', 'operator' => '<>', 'table' => 'bx_cnl_data'),
+            ),
+            'join' => array (
+                'profile' => array(
+                    'type' => 'INNER',
+                    'table' => 'bx_cnl_data',
+                    'mainField' => 'content_id',
+                    'onField' => 'id',
+                    'joinFields' => array('id', 'channel_name', 'picture', 'cover', 'added', 'author', 'allow_view_to'),
+                ),
+                'account' => array(
+                    'type' => 'INNER',
+                    'table' => 'sys_accounts',
+                    'mainField' => 'account_id',
+                    'onField' => 'id',
+                    'joinFields' => array(),
+                ),
+            ),
+            'paginate' => array('perPage' => getParam('bx_channels_per_page_browse'), 'start' => 0),
+            'sorting' => 'none',
+            'rss' => array(
+                'title' => '',
+                'link' => '',
+                'image' => '',
+                'profile' => 0,
+                'fields' => array (
+                    'Guid' => 'link',
+                    'Link' => 'link',
+                    'Title' => 'channel_name',
+                    'DateTimeUTS' => 'added',
+                    'Desc' => 'channel_name',
+                    'Image' => 'picture',
+                ),
+            ),
+            'ident' => 'id'
+        );
+
+        $this->sFilterName = 'bx_cnl_data_filter';
+        $this->oModule = $this->getMain();
+
+        $CNF = &$this->oModule->_oConfig->CNF;
+
+        $sSearchFields = getParam($CNF['PARAM_SEARCHABLE_FIELDS']);
+        $this->aCurrent['searchFields'] = !empty($sSearchFields) ? explode(',', $sSearchFields) : '';
+
+        $oJoinedProfile = null;
+        $bProcessConditionsForPrivateContent = true;
+        switch ($sMode) {
+            case 'created_entries':
+                if(!$this->_setAuthorConditions($sMode, $aParams, $oJoinedProfile)) {
+                    $this->isError = true;
+                    break;
+                }
+                break;
+
+            case 'joined_entries':
+                $oJoinedProfile = BxDolProfile::getInstance((int)$aParams['joined_profile']);
+                if (!$oJoinedProfile) {
+                    $this->isError = true;
+                    break;
+                }
+
+                $bProcessConditionsForPrivateContent = false;
+
+                $this->aCurrent['join']['fans'] = array(
+                    'type' => 'INNER',
+                    'table' => 'bx_cnl_fans',
+                    'mainField' => 'id',
+                    'onField' => 'content',
+                    'joinFields' => array('initiator'),
+                );
+
+                $this->aCurrent['restriction']['fans'] = array('value' => $oJoinedProfile->id(), 'field' => 'initiator', 'operator' => '=', 'table' => 'bx_cnl_fans');
+
+                $this->sBrowseUrl = 'page.php?i=' . $CNF['URI_JOINED_ENTRIES'] . '&profile_id={profile_id}';
+                $this->aCurrent['title'] = _t('_bx_channels_page_title_joined_entries');
+                $this->aCurrent['rss']['link'] = 'modules/?r=channels/rss/' . $sMode . '/' . $oJoinedProfile->id();
+                break;
+
+            case 'connections':
+                if ($this->_setConnectionsConditions($aParams)) {
+                    $bProcessConditionsForPrivateContent = false;
+                    $oProfile = BxDolProfile::getInstance($aParams['profile']);
+                    $oProfile2 = isset($aParams['profile2']) ? BxDolProfile::getInstance($aParams['profile2']) : null;
+
+                    if (isset($aParams['type']) && $aParams['type'] == 'common' && $oProfile && $oProfile2)
+                        $this->aCurrent['title'] = _t('_bx_channels_page_title_browse_connections_mutual', $oProfile->getDisplayName(), $oProfile2->getDisplayName());
+                    elseif ((!isset($aParams['type']) || $aParams['type'] != 'common') && $oProfile)
+                        $this->aCurrent['title'] = _t('_bx_channels_page_title_browse_connections', $oProfile->getDisplayName());
+
+                    $this->aCurrent['rss']['link'] = 'modules/?r=channels/rss/' . $sMode . '/' . $aParams['object'] . '/' . $aParams['type'] . '/' . (int)$aParams['profile'] . '/' . (int)$aParams['profile2'] . '/' . (int)$aParams['mutual'];
+                }
+                break;
+
+            case 'favorite':
+                if(!$this->_setFavoriteConditions($sMode, $aParams, $oJoinedProfile)) {
+                    $this->isError = true;
+                    break;
+                }
+                break;
+
+            case 'recent':
+                $this->aCurrent['rss']['link'] = 'modules/?r=channels/rss/' . $sMode;
+                $this->aCurrent['title'] = _t('_bx_channels_page_title_browse_recent');
+                $this->aCurrent['sorting'] = 'last';
+                $this->sBrowseUrl = 'page.php?i=channels-home';
+                break;
+
+            case 'featured':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_HOME']);
+                $this->aCurrent['title'] = _t('_bx_channels_page_title_browse_featured');
+                $this->aCurrent['restriction']['featured']['value'] = '0';
+                $this->aCurrent['rss']['link'] = 'modules/?r=channels/rss/' . $sMode;
+                $this->aCurrent['sorting'] = 'featured';
+                break;
+
+            case 'recommended':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_HOME']);
+                $this->aCurrent['title'] = _t('_bx_channels_page_title_browse_recommended');
+                $this->aCurrent['restriction']['featured']['value'] = '0';
+                $this->aCurrent['rss']['link'] = 'modules/?r=channels/rss/' . $sMode;
+                $this->aCurrent['sorting'] = 'recommended';
+                $this->_setConditionsForRecommended();
+                break;
+                
+            case 'top':
+                $this->aCurrent['rss']['link'] = 'modules/?r=channels/rss/' . $sMode;
+                $this->aCurrent['title'] = _t('_bx_channels_page_title_browse_top');
+                $this->aCurrent['sorting'] = 'top';
+                $this->sBrowseUrl = 'page.php?i=channels-top';
+                break;
+
+            case '': // search results
+                $this->sBrowseUrl = BX_DOL_SEARCH_KEYWORD_PAGE;
+                $this->aCurrent['title'] = _t('_bx_channels');
+                unset($this->aCurrent['paginate']['perPage'], $this->aCurrent['rss']);
+                break;
+
+            default:
+                $this->isError = true;
+        }
+
+        if ($bProcessConditionsForPrivateContent)
+            $this->addConditionsForPrivateContent($CNF, $oJoinedProfile);
+
+        $this->sCenterContentUnitSelector = false;
+    }
+
+    function getAlterOrder()
+    {
+        switch ($this->aCurrent['sorting']) {
+        case 'featured':
+            return array('order' => ' ORDER BY `bx_cnl_data`.`featured` DESC ');
+        case 'recommended':
+            return array('order' => ' ORDER BY RAND() ');
+        case 'none':
+            return array('order' => ' ORDER BY `sys_accounts`.`logged` DESC ');
+        case 'top':
+            return array('order' => ' ORDER BY `bx_cnl_data`.`views` DESC ');
+        case 'last':
+        default:
+            return array('order' => ' ORDER BY `bx_cnl_data`.`added` DESC ');
+        }
+    }
+
+    function _getPseud ()
+    {
+        return array(
+            'id' => 'id',
+            'channel_name' => 'channel_name',
+            'added' => 'added',
+            'author' => 'author',
+            'picture' => 'picture',
+        );
+    }
+}
+
+/** @} */

+ 55 - 0
modules/boonex/channels/classes/BxCnlTemplate.php

@@ -0,0 +1,55 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+/*
+ * Spaces module representation.
+ */
+class BxCnlTemplate extends BxBaseModGroupsTemplate
+{
+    function __construct(&$oConfig, &$oDb)
+    {
+        $this->MODULE = 'bx_channels';
+        parent::__construct($oConfig, $oDb);
+    }
+    
+    public function entryChilds($aData)
+    {
+        $CNF = $this->_oConfig->CNF;
+        $aChild = $this->_oModule->_oDb->getChildEntriesIdByProfileId($aData[$CNF['FIELD_ID']]);
+        
+        if (count($aChild) == 0)
+            return false;
+
+        return $this->parseHtmlByName('entry-childs.html', array('content' => $this->getBrowseQuick($aChild)));
+    }
+    
+    public function entryParent($aData)
+    {
+        $CNF = $this->_oConfig->CNF;
+        if ($aData[$CNF['FIELD_PARENT']] == 0)
+            return false;
+        return $this->parseHtmlByName('entry-parent.html', array('content' => $this->getBrowseQuick(array($aData[$CNF['FIELD_PARENT']]))));
+    }
+    
+    private function getBrowseQuick($aProfiles)
+    {
+        $sRv = '';
+        foreach ($aProfiles as $iProfileId) {
+            $oProfile = BxDolProfile::getInstance($iProfileId);
+            if(!$oProfile)
+                continue;
+            $sRv .= $oProfile->getUnit(false, array('template' => 'unit_live_search'));
+        }
+        return $sRv;
+    }
+}
+
+/** @} */

+ 21 - 0
modules/boonex/channels/classes/BxCnlUploaderCoverCrop.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlUploaderCoverCrop extends BxBaseModGroupsUploaderCoverCrop
+{
+    public function __construct ($aObject, $sStorageObject, $sUniqId, $oTemplate)
+    {
+        $this->_oModule = BxDolModule::getInstance('bx_channels');
+        parent::__construct($aObject, $sStorageObject, $sUniqId, $oTemplate);
+    }
+}
+
+/** @} */

+ 21 - 0
modules/boonex/channels/classes/BxCnlUploaderPictureCrop.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlUploaderPictureCrop extends BxBaseModGroupsUploaderPictureCrop
+{
+    public function __construct ($aObject, $sStorageObject, $sUniqId, $oTemplate)
+    {
+        $this->_oModule = BxDolModule::getInstance('bx_channels');
+        parent::__construct($aObject, $sStorageObject, $sUniqId, $oTemplate);
+    }
+}
+
+/** @} */

+ 150 - 0
modules/boonex/channels/install/config.php

@@ -0,0 +1,150 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_channels',
+    'title' => 'Channels',
+    'note' => 'Channels functionality.',
+    'version' => '9.0.0.DEV',
+    'vendor' => 'BoonEx',
+    'help_url' => 'http://feed.una.io/?section={module_name}',
+
+    'compatible_with' => array(
+        '9.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use channels in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/channels/',
+    'home_uri' => 'channels',
+
+    'db_prefix' => 'bx_cnl_',
+    'class_prefix' => 'BxCnl',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'Channels',
+
+    /**
+     * Connections.
+     */
+    'connections' => array(
+        'sys_profiles_friends' => array ('type' => 'profiles'),
+        'sys_profiles_subscriptions' => array ('type' => 'profiles'),
+    ),
+
+    /**
+     * Menu triggers.
+     */
+    'menu_triggers' => array(
+        'trigger_profile_view_submenu',
+        'trigger_group_view_submenu',
+        'trigger_group_view_actions',
+    ),
+
+    /**
+     * Page triggers.
+     */
+    'page_triggers' => array (
+        'trigger_page_group_view_entry',
+    ),
+
+    /**
+     * Storage objects to automatically delete files from upon module uninstallation.
+     * Note. Don't add storage objects used in transcoder objects.
+     */
+    'storages' => array(
+        'bx_channels_pics'
+    ),
+
+    /**
+     * Transcoders.
+     */
+    'transcoders' => array(
+        'bx_channels_icon',
+        'bx_channels_thumb',
+        'bx_channels_avatar',
+        'bx_channels_picture',
+        'bx_channels_cover',
+        'bx_channels_cover_thumb',
+        'bx_channels_gallery'
+    ),
+
+    /**
+     * Extended Search Forms.
+     */
+    'esearches' => array(
+        'bx_channels',
+        'bx_channels_cmts',
+    ),
+
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'uninstall' => array (
+        'process_esearches' => 1,
+        'execute_sql' => 1,
+        'update_languages' => 1,
+        'process_connections' => 1,
+        'process_deleted_profiles' => 1,
+        'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'enable_success' => array(
+        'process_menu_triggers' => 1,
+        'process_page_triggers' => 1,
+        'process_esearches' => 1,
+        'register_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array (
+        'execute_sql' => 1,
+        'unregister_transcoders' => 1,
+        'update_relations' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable_failed' => array (
+        'register_transcoders' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+
+    /**
+     * Connections Section
+     */
+    'relations' => array(
+        'bx_timeline',
+        'bx_notifications',
+    ),
+);
+
+/** @} */

+ 20 - 0
modules/boonex/channels/install/installer.php

@@ -0,0 +1,20 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+class BxCnlInstaller extends BxBaseModProfileInstaller
+{
+    function __construct($aConfig)
+    {
+        parent::__construct($aConfig);
+    }
+}
+
+/** @} */

+ 306 - 0
modules/boonex/channels/install/langs/en.xml

@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string name="_bx_channels"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_cmts"><![CDATA[Channels' Comments]]></string>
+	
+	<string name="_bx_channels_option_num_connections_quick"><![CDATA[Number of items in friends block]]></string>
+	<string name="_bx_channels_option_per_page_browse"><![CDATA[Number of items per page]]></string>
+	<string name="_bx_channels_option_num_rss"><![CDATA[Number of items in RSS feed]]></string>
+	<string name="_bx_channels_option_searchable_fields"><![CDATA[Searchable fields]]></string>
+	
+	<string name="_bx_channels_form_profile"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_form_profile_display_add"><![CDATA[Add Channel]]></string>
+	<string name="_bx_channels_form_profile_display_edit"><![CDATA[Edit Channel]]></string>
+	<string name="_bx_channels_form_profile_display_edit_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_channels_form_profile_display_delete"><![CDATA[Delete Channel]]></string>
+	<string name="_bx_channels_form_profile_display_view"><![CDATA[View Channel]]></string>
+	<string name="_bx_channels_form_profile_display_view_full"><![CDATA[Full View Channel]]></string>
+	<string name="_bx_channels_form_profile_display_invite"><![CDATA[Invite to Channel]]></string>
+	<string name="_bx_channels_form_entry_input_author"><![CDATA[Author]]></string>
+	<string name="_bx_channels_form_profile_input_sys_do_submit"><![CDATA[Submit]]></string>
+	<string name="_bx_channels_form_profile_input_sys_join_confirm"><![CDATA[Join confirmation]]></string>
+	<string name="_bx_channels_form_profile_input_join_confirm"><![CDATA[Join confirmation]]></string>
+	<string name="_bx_channels_form_profile_input_sys_allow_view_to"><![CDATA[Privacy]]></string>
+	<string name="_bx_channels_form_profile_input_allow_view_to"><![CDATA[Privacy]]></string>
+	<string name="_bx_channels_form_profile_input_allow_view_to_desc"><![CDATA[Closed - anyone can find the channel and see who's in it, only members can see posts. Secret - only members can find the channel and see posts.]]></string>
+	<string name="_bx_channels_form_profile_input_sys_initial_members"><![CDATA[Invite Members]]></string>
+	<string name="_bx_channels_form_profile_input_initial_members"><![CDATA[Invite Members]]></string>
+  <string name="_bx_channels_form_profile_input_sys_channel_name"><![CDATA[Channel Name]]></string>
+	<string name="_bx_channels_form_profile_input_channel_name"><![CDATA[Channel Name]]></string>
+	<string name="_bx_channels_form_profile_input_channel_name_err"><![CDATA[This information is essential. Please, fill in this field.]]></string>
+	<string name="_bx_channels_form_profile_input_sys_picture"><![CDATA[Channel Picture]]></string>
+	<string name="_bx_channels_form_profile_input_picture"><![CDATA[Upload New Channel Picture]]></string>
+	<string name="_bx_channels_form_profile_input_picture_err"><![CDATA[Channel picture is mandatory.]]></string>
+	<string name="_bx_channels_form_profile_input_sys_cover"><![CDATA[Cover Picture]]></string>
+	<string name="_bx_channels_form_profile_input_cover"><![CDATA[Upload New Cover Picture]]></string>
+	<string name="_bx_channels_form_profile_input_sys_delete_confirm"><![CDATA[Delete confirmation]]></string>
+	<string name="_bx_channels_form_profile_input_delete_confirm"><![CDATA[I am sure I want to delete this channel]]></string>
+	<string name="_bx_channels_form_profile_input_delete_confirm_info"><![CDATA[This action can not be undone.]]></string>
+	<string name="_bx_channels_form_profile_input_delete_confirm_error"><![CDATA[Please check this checkbox if you really want to delete channel.]]></string>
+	
+	<string name="_bx_channels_acl_action_create_profile"><![CDATA[Create Channel]]></string>
+	<string name="_bx_channels_acl_action_delete_profile"><![CDATA[Delete Channel]]></string>
+	<string name="_bx_channels_acl_action_view_profile"><![CDATA[View Channel]]></string>
+	<string name="_bx_channels_acl_action_edit_any_profile"><![CDATA[Edit Any Channel]]></string>
+	
+	<string name="_bx_channels_page_title_sys_joined_entries"><![CDATA[Profile Channels]]></string>
+	<string name="_bx_channels_page_title_joined_entries"><![CDATA[Profile Channels]]></string>
+	<string name="_bx_channels_page_title_sys_create_profile"><![CDATA[Create Channel]]></string>
+	<string name="_bx_channels_page_title_create_profile"><![CDATA[Create Channel]]></string>
+	<string name="_bx_channels_page_title_sys_edit_profile"><![CDATA[Edit Channel]]></string>
+	<string name="_bx_channels_page_title_edit_profile"><![CDATA[Edit Channel]]></string>
+	<string name="_bx_channels_page_title_sys_edit_profile_cover"><![CDATA[Edit Channel Cover]]></string>
+	<string name="_bx_channels_page_title_edit_profile_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_channels_page_title_sys_delete_profile"><![CDATA[Delete Channel]]></string>
+	<string name="_bx_channels_page_title_delete_profile"><![CDATA[Delete Channel]]></string>
+	<string name="_bx_channels_page_title_sys_view_profile_closed"><![CDATA[View Closed Channel]]></string>
+	<string name="_bx_channels_page_title_sys_view_profile"><![CDATA[View Channel]]></string>
+	<string name="_bx_channels_page_title_view_profile"><![CDATA[{display_name}]]></string>
+	<string name="_bx_channels_page_title_browse"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_page_title_browse_by_author"><![CDATA[Channels of {display_name}]]></string>
+	<string name="_bx_channels_page_title_browse_featured"><![CDATA[Featured Channels]]></string>
+	<string name="_bx_channels_page_title_browse_top"><![CDATA[Top Channels]]></string>
+	<string name="_bx_channels_page_title_browse_recent"><![CDATA[New Channels]]></string>
+	<string name="_bx_channels_page_title_browse_connections"><![CDATA[{0} connections]]></string>
+	<string name="_bx_channels_page_title_browse_connections_mutual"><![CDATA[{0} and {1} mutual connections]]></string>
+	<string name="_bx_channels_page_title_sys_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_page_title_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_page_title_sys_channel_fans"><![CDATA[Members]]></string>
+	<string name="_bx_channels_page_title_channel_fans"><![CDATA[Members]]></string>
+	<string name="_bx_channels_page_title_sys_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_channels_page_title_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_channels_page_title_sys_profile_info"><![CDATA[Channel Info]]></string>
+	<string name="_bx_channels_page_title_profile_info"><![CDATA[Info about {display_name}]]></string>
+	<string name="_bx_channels_page_title_sys_recent"><![CDATA[New Channels]]></string>
+	<string name="_bx_channels_page_title_recent"><![CDATA[New Channels]]></string>
+	<string name="_bx_channels_page_title_sys_manage"><![CDATA[Manage Own Channels]]></string>
+	<string name="_bx_channels_page_title_sys_manage_administration"><![CDATA[Manage All Channels]]></string>
+	<string name="_bx_channels_page_title_manage"><![CDATA[Manage Channels]]></string>
+	<string name="_bx_channels_page_title_sys_top"><![CDATA[Top Channels]]></string>
+	<string name="_bx_channels_page_title_top"><![CDATA[Top Channels]]></string>
+	<string name="_bx_channels_page_title_sys_invite_to_channel"><![CDATA[Invite Members to the Channel]]></string>
+	<string name="_bx_channels_page_title_invite_to_channel"><![CDATA[Invite Members to the Channel]]></string>
+	<string name="_bx_channels_page_title_sys_entries_search"><![CDATA[Search]]></string>
+	<string name="_bx_channels_page_title_entries_search"><![CDATA[Search]]></string>
+	
+	<string name="_bx_channels_page_block_title_sys_entries_actions"><![CDATA[Channels actions]]></string>
+	<string name="_bx_channels_page_block_title_entries_actions"><![CDATA[Channels actions]]></string>
+	<string name="_bx_channels_page_block_title_sys_entries_of_author"><![CDATA[Channels of author]]></string>
+	<string name="_bx_channels_page_block_title_entries_of_author"><![CDATA[Channels by {display_name}]]></string>
+	<string name="_bx_channels_page_block_title_favorites_of_author"><![CDATA[Favorite Channels]]></string>
+	<string name="_bx_channels_page_block_title_sys_favorites_of_author"><![CDATA[Favorite Channels]]></string>
+	<string name="_bx_channels_page_block_title_sys_joined_entries"><![CDATA[Joined Channels]]></string>
+	<string name="_bx_channels_page_block_title_joined_entries"><![CDATA[Joined Channels]]></string>
+  <string name="_bx_channels_page_block_title_create_profile"><![CDATA[Create Channel]]></string>
+	<string name="_bx_channels_page_block_title_edit_profile"><![CDATA[Edit Channel]]></string>
+	<string name="_bx_channels_page_block_title_edit_profile_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_channels_page_block_title_delete_profile"><![CDATA[Delete Channel]]></string>
+	<string name="_bx_channels_page_block_title_profile_info_link"><![CDATA[About <a href="{profile_link}">{display_name}</a>]]></string>
+	<string name="_bx_channels_page_block_title_profile_info"><![CDATA[Info]]></string>
+	<string name="_bx_channels_page_block_title_system_profile_info"><![CDATA[Info]]></string>
+	<string name="_bx_channels_page_block_title_profile_description"><![CDATA[Description]]></string>
+	<string name="_bx_channels_page_block_title_profile_friends_link"><![CDATA[Friends of <a href="{profile_link}">{display_name}</a>]]></string>
+	<string name="_bx_channels_page_block_title_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_page_block_title_system_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_page_block_title_admins"><![CDATA[Administrators]]></string>
+	<string name="_bx_channels_page_block_title_fans_link"><![CDATA[Members of <a href="{profile_link}">{display_name}</a>]]></string>
+	<string name="_bx_channels_page_block_title_fans"><![CDATA[Members]]></string>
+	<string name="_bx_channels_page_block_title_system_fans"><![CDATA[Members]]></string>
+	<string name="_bx_channels_page_block_title_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_channels_page_block_title_profile_comments_link"><![CDATA[Comments to <a href="{entry_link}">{title}</a>]]></string>
+	<string name="_bx_channels_page_block_title_profile_actions"><![CDATA[Actions]]></string>
+	<string name="_bx_channels_page_block_title_featured_profiles"><![CDATA[Featured Channels]]></string>
+	<string name="_bx_channels_page_block_title_latest_profiles"><![CDATA[New Channels]]></string>
+	<string name="_bx_channels_page_block_title_system_manage"><![CDATA[Manage Own Channels]]></string>
+	<string name="_bx_channels_page_block_title_system_manage_administration"><![CDATA[Manage All Channels]]></string>
+	<string name="_bx_channels_page_block_title_manage"><![CDATA[Manage Channels]]></string>
+	<string name="_bx_channels_page_block_title_top_profiles"><![CDATA[Top Channels]]></string>
+	<string name="_bx_channels_page_block_title_entry_social_sharing"><![CDATA[Share]]></string>
+	<string name="_bx_channels_page_block_title_categories"><![CDATA[Channels Categories]]></string>
+	<string name="_bx_channels_page_block_title_invite_to_channel"><![CDATA[Invite Members to the Channel]]></string>
+	<string name="_bx_channels_page_block_title_search_form"><![CDATA[Search Form]]></string>
+	<string name="_bx_channels_page_block_title_search_results"><![CDATA[Search Results]]></string>
+	<string name="_bx_channels_page_block_title_search_form_cmts"><![CDATA[Comments Search Form]]></string>
+	<string name="_bx_channels_page_block_title_search_results_cmts"><![CDATA[Comments Search Results]]></string>
+	<string name="_bx_channels_page_block_title_sys_featured_entries_view_showcase"><![CDATA[Featured Channels (Showcase View)]]></string>
+	<string name="_bx_channels_page_block_title_featured_entries_view_showcase"><![CDATA[Featured Channels]]></string>
+	<string name="_bx_channels_page_block_title_sys_recommended_entries_view_showcase"><![CDATA[Recommended Channels (Showcase View)]]></string>
+	<string name="_bx_channels_page_block_title_recommended_entries_view_showcase"><![CDATA[Recommended Channels]]></string>
+	
+	<string name="_bx_channels_menu_title_submenu"><![CDATA[Channels Submenu]]></string>
+	<string name="_bx_channels_menu_set_title_submenu"><![CDATA[Channels Submenu]]></string>
+	<string name="_bx_channels_menu_set_title_view_profile_actions"><![CDATA[Channel Actions]]></string>
+	<string name="_bx_channels_menu_title_view_profile_actions"><![CDATA[Channel Actions]]></string>
+	<string name="_bx_channels_menu_set_title_view_profile_actions_more"><![CDATA[Channel More Actions]]></string>
+	<string name="_bx_channels_menu_title_view_profile_actions_more"><![CDATA[Channel More Actions]]></string>
+	<string name="_bx_channels_menu_set_title_view_profile_submenu"><![CDATA[View Channel Submenu]]></string>
+	<string name="_bx_channels_menu_title_view_profile_submenu"><![CDATA[View Channel Submenu]]></string>
+	<string name="_bx_channels_menu_title_view_profile_submenu_cover"><![CDATA[Channel Cover Submenu]]></string>
+	<string name="_bx_channels_menu_title_entries_my"><![CDATA[Profile Channels Action Menu]]></string>
+	<string name="_bx_channels_menu_set_title_entries_my"><![CDATA[Profile Channels Menu]]></string>
+	<string name="_bx_channels_menu_set_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
+	<string name="_bx_channels_menu_title_manage_tools"><![CDATA[Manage Tools Submenu]]></string>
+	<string name="_bx_channels_menu_item_title_system_delete"><![CDATA[Delete]]></string>
+	<string name="_bx_channels_menu_item_title_delete"><![CDATA[Delete]]></string>
+	<string name="_bx_channels_menu_item_title_system_delete_with_content"><![CDATA[Delete With Content]]></string>
+	<string name="_bx_channels_menu_item_title_delete_with_content"><![CDATA[Delete With Content]]></string>
+	<string name="_bx_channels_menu_item_title_system_edit_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_channels_menu_item_title_edit_cover"><![CDATA[Edit Cover]]></string>
+	<string name="_bx_channels_menu_item_title_system_edit_profile"><![CDATA[Edit Channel]]></string>
+	<string name="_bx_channels_menu_item_title_edit_profile"><![CDATA[Edit Channel]]></string>
+	<string name="_bx_channels_menu_item_title_system_delete_profile"><![CDATA[Delete Channel]]></string>
+	<string name="_bx_channels_menu_item_title_delete_profile"><![CDATA[Delete Channel]]></string>
+	<string name="_bx_channels_menu_item_title_system_delete_account"><![CDATA[Delete Account]]></string>
+	<string name="_bx_channels_menu_item_title_delete_account"><![CDATA[Delete Account]]></string>
+	<string name="_bx_channels_menu_item_title_system_profile_type"><![CDATA[Channel]]></string>
+	<string name="_bx_channels_menu_item_title_profile_type"><![CDATA[Channel]]></string>
+	<string name="_bx_channels_menu_item_title_system_create_profile"><![CDATA[New Channel]]></string>
+	<string name="_bx_channels_menu_item_title_create_profile"><![CDATA[New Channel]]></string>
+	<string name="_bx_channels_menu_item_title_system_view_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_menu_item_title_view_profile_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_menu_item_title_system_view_joined_channels"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_menu_item_title_view_joined_channels"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_menu_item_title_system_view_fans"><![CDATA[Members]]></string>
+	<string name="_bx_channels_menu_item_title_view_fans"><![CDATA[Members]]></string>
+	<string name="_bx_channels_menu_item_title_system_view_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_channels_menu_item_title_view_profile_comments"><![CDATA[Comments]]></string>
+	<string name="_bx_channels_menu_item_title_system_view_profile_info"><![CDATA[Info]]></string>
+	<string name="_bx_channels_menu_item_title_view_profile_info"><![CDATA[Info]]></string>
+	<string name="_bx_channels_menu_item_title_system_view_profile_view"><![CDATA[Channel]]></string>
+	<string name="_bx_channels_menu_item_title_view_profile_view"><![CDATA[Channel]]></string>
+	<string name="_bx_channels_menu_item_title_system_invite"><![CDATA[Invite]]></string>
+	<string name="_bx_channels_menu_item_title_invite"><![CDATA[Invite]]></string>
+	
+	<string name="_bx_channels_menu_item_title_system_befriend"><![CDATA[Add friend]]></string>
+	<string name="_bx_channels_menu_item_title_befriend"><![CDATA[Add friend]]></string>
+	<string name="_bx_channels_menu_item_title_befriend_sent"><![CDATA[Add friend (requested)]]></string>
+	<string name="_bx_channels_menu_item_title_befriend_confirm"><![CDATA[Accept friend request]]></string>
+	<string name="_bx_channels_menu_item_title_system_unfriend"><![CDATA[Unfriend]]></string>
+	<string name="_bx_channels_menu_item_title_unfriend"><![CDATA[Unfriend]]></string>
+	<string name="_bx_channels_menu_item_title_unfriend_cancel_request"><![CDATA[Cancel friend request]]></string>
+	<string name="_bx_channels_menu_item_title_unfriend_reject_request"><![CDATA[Reject friend request]]></string>
+	
+	<string name="_bx_channels_menu_item_title_system_become_fan"><![CDATA[Join Channel]]></string>
+	<string name="_bx_channels_menu_item_title_become_fan"><![CDATA[Join Channel]]></string>
+	<string name="_bx_channels_menu_item_title_become_fan_sent"><![CDATA[Join Channel (requested)]]></string>
+	<string name="_bx_channels_menu_item_title_become_fan_confirm"><![CDATA[Accept Request]]></string>
+	<string name="_bx_channels_menu_item_title_system_leave_channel"><![CDATA[Leave Channel]]></string>
+	<string name="_bx_channels_menu_item_title_leave_channel"><![CDATA[Leave Channel]]></string>
+	<string name="_bx_channels_menu_item_title_leave_channel_cancel_request"><![CDATA[Cancel Request]]></string>
+	<string name="_bx_channels_menu_item_title_leave_channel_reject_request"><![CDATA[Reject Request]]></string>
+	
+	<string name="_bx_channels_menu_item_title_system_subscribe"><![CDATA[Follow]]></string>
+	<string name="_bx_channels_menu_item_title_subscribe"><![CDATA[Follow]]></string>
+	<string name="_bx_channels_menu_item_title_system_unsubscribe"><![CDATA[Unfollow]]></string>
+	<string name="_bx_channels_menu_item_title_unsubscribe"><![CDATA[Unfollow]]></string>
+	<string name="_bx_channels_menu_item_title_system_more_actions"><![CDATA[More Actions]]></string>
+	<string name="_bx_channels_menu_item_title_more_actions"><![CDATA[]]></string>
+	<string name="_bx_channels_menu_item_title_system_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_menu_item_title_friends"><![CDATA[Friends]]></string>
+	<string name="_bx_channels_menu_item_title_system_friend_requests"><![CDATA[Friend requests number]]></string>
+	<string name="_bx_channels_menu_item_title_friend_requests"><![CDATA[{addon} friend requests]]></string>
+	<string name="_bx_channels_menu_item_title_system_manage_my_channels"><![CDATA[My channels]]></string>
+	<string name="_bx_channels_menu_item_title_manage_my_channels"><![CDATA[{addon} channels]]></string>
+	<string name="_bx_channels_menu_item_title_system_entries_recent"><![CDATA[New]]></string>
+	<string name="_bx_channels_menu_item_title_entries_recent"><![CDATA[New]]></string>
+	<string name="_bx_channels_menu_item_title_system_entries_search"><![CDATA[Search]]></string>
+	<string name="_bx_channels_menu_item_title_entries_search"><![CDATA[Search]]></string>
+	<string name="_bx_channels_menu_item_title_system_entries_manage"><![CDATA[Manage]]></string>
+	<string name="_bx_channels_menu_item_title_entries_manage"><![CDATA[Manage]]></string>
+	<string name="_bx_channels_menu_item_title_system_entries_home"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_menu_item_title_entries_home"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_menu_item_title_system_admt_channels"><![CDATA[Channels]]></string>
+	<string name="_bx_channels_menu_item_title_admt_channels"><![CDATA[Channels - {addon} unapproved]]></string>
+	<string name="_bx_channels_menu_item_title_manage_my"><![CDATA[My Channels]]></string>
+	<string name="_bx_channels_menu_item_title_manage_all"><![CDATA[All Channels]]></string>
+	<string name="_bx_channels_menu_item_title_system_entries_top"><![CDATA[Top]]></string>
+	<string name="_bx_channels_menu_item_title_entries_top"><![CDATA[Top]]></string>
+	
+	<string name="_bx_channels_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
+	<string name="_bx_channels_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
+	<string name="_bx_channels_grid_filter_item_title_adm_pending"><![CDATA[Pending]]></string>
+	<string name="_bx_channels_grid_filter_item_title_adm_suspended"><![CDATA[Suspended]]></string>
+	<string name="_bx_channels_grid_column_title_adm_active"><![CDATA[Active]]></string>
+	<string name="_bx_channels_grid_column_title_adm_name"><![CDATA[Name]]></string>
+	<string name="_bx_channels_grid_column_title_adm_added"><![CDATA[Created]]></string>
+	<string name="_bx_channels_grid_column_title_adm_account"><![CDATA[Account]]></string>
+	<string name="_bx_channels_grid_action_title_adm_delete"><![CDATA[Delete]]></string>
+	<string name="_bx_channels_grid_action_title_adm_delete_with_content"><![CDATA[Delete With Content]]></string>
+	<string name="_bx_channels_grid_action_title_adm_more_actions"><![CDATA[More Actions]]></string>
+	<string name="_bx_channels_grid_action_err_delete"><![CDATA[Cannot delete the selected channel(s).]]></string>
+	<string name="_bx_channels_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
+	
+	<string name="_bx_channels_chart_growth"><![CDATA[Channels: Growth]]></string>
+	<string name="_bx_channels_chart_growth_speed"><![CDATA[Channels: Growth Speed]]></string>
+	
+	<string name="_bx_channels_search_extended"><![CDATA[Channels Search]]></string>
+	<string name="_bx_channels_search_extended_cmts"><![CDATA[Channels Comments Search]]></string>
+
+  <string name="_bx_channels_err_delete_child_presend"><![CDATA[Cannot delete this channel because there are child elements.]]></string>
+	<string name="_bx_channels_txt_account_pending"><![CDATA[This channel is pending approval, please wait until it is activated.]]></string>
+	<string name="_bx_channels_txt_account_suspended"><![CDATA[This channel is suspended.]]></string>
+	<string name="_bx_channels_txt_N_fans"><![CDATA[{0} members]]></string>
+	<string name="_bx_channels_txt_sample_single"><![CDATA[channel]]></string>
+	<string name="_bx_channels_txt_sample_single_with_article"><![CDATA[a channel]]></string>
+	<string name="_bx_channels_txt_sample_comment_single"><![CDATA[comment to channel]]></string>
+	<string name="_bx_channels_txt_sample_vote_single"><![CDATA[vote to channel]]></string>
+	<string name="_bx_channels_txt_to_admins"><![CDATA[To Admins]]></string>
+	<string name="_bx_channels_txt_from_admins"><![CDATA[From Admins]]></string>
+	<string name="_bx_channels_txt_private_channel"><![CDATA[Private channel]]></string>
+	
+	<string name="_bx_channels_alert_action_fan_added"><![CDATA[member joined]]></string>
+	<string name="_bx_channels_txt_ntfs_fan_added"><![CDATA[Channel <b class="bx-ntfs-content-profile">{owner_name}</b> has got a member <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
+	<string name="_bx_channels_alert_action_join_request"><![CDATA[join request]]></string>
+	<string name="_bx_channels_txt_ntfs_join_request"><![CDATA[Channel <b class="bx-ntfs-content-profile">{owner_name}</b> has a join request from <b class="bx-ntfs-content-entry">{subentry_sample}</b>]]></string>
+	<string name="_bx_channels_txt_ntfs_timeline_post_common"><![CDATA[New post <b class="bx-ntfs-content-entry">{subentry_sample}</b> in <b class="bx-ntfs-content-profile">{owner_name}</b> channel timeline]]></string>
+	
+	<string name="_bx_channels_pre_lists_cats"><![CDATA[Channel categories]]></string>
+	<string name="_bx_channels_cat_General"><![CDATA[General]]></string>
+	<string name="_bx_channels_cat_Business"><![CDATA[Business]]></string>
+	<string name="_bx_channels_cat_Interests"><![CDATA[Interests]]></string>
+	<string name="_bx_channels_cat_Causes"><![CDATA[Causes]]></string>
+	<string name="_bx_channels_cat_Fun"><![CDATA[Fun]]></string>
+	<string name="_bx_channels_cat_Uncategorised"><![CDATA[Uncategorised]]></string>
+	
+	<string name="_bx_channels_email_join_request"><![CDATA[Channel join request]]></string>
+	<string name="_bx_channels_email_join_request_subject"><![CDATA[Request to join your channel]]></string>
+	<string name="_bx_channels_email_join_request_body"><![CDATA[{email_header}
+	<p>New request to join <a href="{EntryUrl}">{EntryTitle}</a> channel from <a href="{NewMemberUrl}">{NewMemberDisplayName}</a></p>
+	{email_footer}]]></string>
+	
+	<string name="_bx_channels_email_join_reject"><![CDATA[Channel join request was rejected]]></string>
+	<string name="_bx_channels_email_join_reject_subject"><![CDATA[Request to join a channel was rejected]]></string>
+	<string name="_bx_channels_email_join_reject_body"><![CDATA[{email_header}
+	<p>Your request to join <a href="{EntryUrl}">{EntryTitle}</a> channel was rejected by channel admin.</p>
+	{email_footer}]]></string>
+	
+	<string name="_bx_channels_email_join_confirm"><![CDATA[Channel join request was confirmed]]></string>
+	<string name="_bx_channels_email_join_confirm_subject"><![CDATA[Your request to join a channel was confirmed]]></string>
+	<string name="_bx_channels_email_join_confirm_body"><![CDATA[{email_header}
+	<p>Your request to join <a href="{EntryUrl}">{EntryTitle}</a> channel was confirmed by the channel admin.</p>
+	{email_footer}]]></string>
+	
+	<string name="_bx_channels_email_fan_remove"><![CDATA[Profile was removed from channel fans]]></string>
+	<string name="_bx_channels_email_fan_remove_subject"><![CDATA[Your profile was removed from the channel]]></string>
+	<string name="_bx_channels_email_fan_remove_body"><![CDATA[{email_header}
+	<p>Your profile was removed from <a href="{EntryUrl}">{EntryTitle}</a> channel by the channel admin.</p>
+	{email_footer}]]></string>
+	
+	<string name="_bx_channels_email_fan_become_admin"><![CDATA[Channel admin status was granted]]></string>
+	<string name="_bx_channels_email_fan_become_admin_subject"><![CDATA[You are a channel admin now]]></string>
+	<string name="_bx_channels_email_fan_become_admin_body"><![CDATA[{email_header}
+	<p>You are an admin of <a href="{EntryUrl}">{EntryTitle}</a> channel now.</p>
+	{email_footer}]]></string>
+	
+	<string name="_bx_channels_email_admin_become_fan"><![CDATA[Channel admin status was revoked]]></string>
+	<string name="_bx_channels_email_admin_become_fan_subject"><![CDATA[Your channel admin status was revoked]]></string>
+	<string name="_bx_channels_email_admin_become_fan_body"><![CDATA[{email_header}
+	<p>Your admin status was revoked from <a href="{EntryUrl}">{EntryTitle}</a> channel.</p>
+	{email_footer}]]></string>
+	
+	<string name="_bx_channels_email_invitation"><![CDATA[Invitation to channel]]></string>
+	<string name="_bx_channels_email_invitation_subject"><![CDATA[Invitation to "{EntryTitle}" channel]]></string>
+	<string name="_bx_channels_email_invitation_body"><![CDATA[{email_header}
+	<p><a href="{InviterUrl}">{InviterDisplayName}</a> invited you to <a href="{EntryUrl}">{EntryTitle} channel</a>.</p>
+	{email_footer}]]></string>
+</resources>

+ 83 - 0
modules/boonex/channels/install/sql/disable.sql

@@ -0,0 +1,83 @@
+
+-- SETTINGS
+SET @iTypeId = (SELECT `ID` FROM `sys_options_types` WHERE `name` = 'bx_channels' LIMIT 1);
+SET @iCategId = (SELECT `ID` FROM `sys_options_categories` WHERE `type_id` = @iTypeId LIMIT 1);
+DELETE FROM `sys_options` WHERE `category_id` = @iCategId;
+DELETE FROM `sys_options_categories` WHERE `type_id` = @iTypeId;
+DELETE FROM `sys_options_types` WHERE `id` = @iTypeId;
+
+-- PAGES
+DELETE FROM `sys_objects_page` WHERE `module` = 'bx_channels';
+DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_channels' OR `object` IN('bx_channels_create_profile', 'bx_channels_delete_profile', 'bx_channels_edit_profile', 'bx_channels_edit_profile_cover', 'bx_channels_invite', 'bx_channels_view_profile', 'bx_channels_view_profile_closed', 'bx_channels_profile_info', 'bx_channels_profile_comments', 'bx_channels_home', 'bx_channels_fans', 'bx_channels_joined', 'bx_channels_top', 'bx_channels_search', 'bx_channels_manage', 'bx_channels_administration');
+
+-- MENU
+DELETE FROM `sys_objects_menu` WHERE `module` = 'bx_channels';
+DELETE FROM `sys_menu_sets` WHERE `module` = 'bx_channels';
+DELETE FROM `sys_menu_items` WHERE `module` = 'bx_channels' OR `set_name` IN('bx_channels_view_submenu', 'bx_channels_submenu', 'bx_channels_view_actions', 'bx_channels_view_actions_more', 'bx_channels_my', 'bx_channels_snippet_meta', 'bx_channels_menu_manage_tools');
+
+-- ACL
+DELETE `sys_acl_actions`, `sys_acl_matrix` FROM `sys_acl_actions`, `sys_acl_matrix` WHERE `sys_acl_matrix`.`IDAction` = `sys_acl_actions`.`ID` AND `sys_acl_actions`.`Module` = 'bx_channels';
+DELETE FROM `sys_acl_actions` WHERE `Module` = 'bx_channels';
+
+-- COMMENTS
+DELETE FROM `sys_objects_cmts` WHERE `Name` = 'bx_channels';
+
+-- VIEWS
+DELETE FROM `sys_objects_view` WHERE `name` = 'bx_channels';
+
+-- VOTES
+DELETE FROM `sys_objects_vote` WHERE `Name` = 'bx_channels';
+
+-- SCORES
+DELETE FROM `sys_objects_score` WHERE `name` = 'bx_channels';
+
+-- REPORTS
+DELETE FROM `sys_objects_report` WHERE `name` = 'bx_channels';
+
+-- FAFORITES
+DELETE FROM `sys_objects_favorite` WHERE `name` = 'bx_channels';
+
+-- FEATURED
+DELETE FROM `sys_objects_feature` WHERE `name` = 'bx_channels';
+
+-- METATAGS
+DELETE FROM `sys_objects_metatags` WHERE `object` = 'bx_channels';
+
+-- CATEGORY
+DELETE FROM `sys_objects_category` WHERE `object` = 'bx_channels_cats';
+
+-- SEARCH
+DELETE FROM `sys_objects_search` WHERE `ObjectName` = 'bx_channels';
+
+-- CONNECTIONS
+DELETE FROM `sys_objects_connection` WHERE `object` = 'bx_channels_fans';
+
+-- STATS
+DELETE FROM `sys_statistics` WHERE `name` LIKE 'bx_channels%';
+
+-- CHARTS
+DELETE FROM `sys_objects_chart` WHERE `object` LIKE 'bx_channels%';
+
+-- GRIDS
+DELETE FROM `sys_objects_grid` WHERE `object` IN ('bx_channels_administration', 'bx_channels_moderation', 'bx_channels_common', 'bx_channels_fans');
+DELETE FROM `sys_grid_fields` WHERE `object` IN ('bx_channels_administration', 'bx_channels_moderation', 'bx_channels_common', 'bx_channels_fans');
+DELETE FROM `sys_grid_actions` WHERE `object` IN ('bx_channels_administration', 'bx_channels_moderation', 'bx_channels_common', 'bx_channels_fans');
+
+-- ALERTS
+SET @iHandler := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = 'bx_channels' LIMIT 1);
+DELETE FROM `sys_alerts` WHERE `handler_id` = @iHandler;
+DELETE FROM `sys_alerts_handlers` WHERE `id` = @iHandler;
+
+-- PRIVACY 
+DELETE FROM `sys_objects_privacy` WHERE `object` IN('bx_channels_allow_view_to', 'bx_channels_allow_view_notification_to');
+
+-- EMAIL TEMPLATES
+DELETE FROM `sys_email_templates` WHERE `Module` = 'bx_channels';
+
+-- UPLOADERS
+DELETE FROM `sys_objects_uploader` WHERE `object` IN('bx_channels_cover_crop', 'bx_channels_picture_crop');
+
+-- ALERTS
+SET @iHandler := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = 'bx_channels' LIMIT 1);
+DELETE FROM `sys_alerts` WHERE `handler_id` = @iHandler;
+DELETE FROM `sys_alerts_handlers` WHERE `id` = @iHandler;

+ 499 - 0
modules/boonex/channels/install/sql/enable.sql

@@ -0,0 +1,499 @@
+
+-- 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_channels', '_bx_channels', 'bx_channels@modules/boonex/channels/|std-icon.svg', IF(ISNULL(@iTypeOrder), 1, @iTypeOrder + 1));
+SET @iTypeId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options_categories` (`type_id`, `name`, `caption`, `order`)
+VALUES (@iTypeId, 'bx_channels', '_bx_channels', 1);
+SET @iCategId = LAST_INSERT_ID();
+
+INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `extra`, `check`, `check_error`, `order`) VALUES
+('bx_channels_num_connections_quick', '6', @iCategId, '_bx_channels_option_num_connections_quick', 'digit', '', '', '', 10),
+('bx_channels_per_page_browse', '24', @iCategId, '_bx_channels_option_per_page_browse', 'digit', '', '', '', 11),
+('bx_channels_num_rss', '10', @iCategId, '_bx_channels_option_num_rss', 'digit', '', '', '', 12),
+('bx_channels_per_page_browse_showcase', '32', @iCategId, '_sys_option_per_page_browse_showcase', 'digit', '', '', '', 15),
+('bx_channels_per_page_browse_recommended', '10', @iCategId, '_sys_option_per_page_browse_recommended', 'digit', '', '', '', 16),
+('bx_channels_searchable_fields', 'channel_name', @iCategId, '_bx_channels_option_searchable_fields', 'list', 'a:2:{s:6:"module";s:11:"bx_channels";s:6:"method";s:21:"get_searchable_fields";}', '', '', 30);
+
+
+-- PAGES
+
+-- PAGE: create profile
+
+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_channels_create_profile', 'create-channel-profile', '_bx_channels_page_title_sys_create_profile', '_bx_channels_page_title_create_profile', 'bx_channels', 5, 2147483647, 1, 'page.php?i=create-channel-profile', '', '', '', 0, 1, 0, '', '');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_channels_create_profile', 1, 'bx_channels', '_bx_channels_page_block_title_create_profile', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:13:\"entity_create\";}', 0, 1, 1);
+
+
+-- PAGE: view profile
+
+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_channels_view_profile', 'view-channel-profile', '_bx_channels_page_title_sys_view_profile', '_bx_channels_page_title_view_profile', 'bx_channels', 10, 2147483647, 1, 'page.php?i=view-channel-profile', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('bx_channels_view_profile', 1, 'bx_channels', '', '_bx_channels_page_block_title_entry_social_sharing', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:21:\"entity_social_sharing\";}', 0, 0, 1, 0),
+('bx_channels_view_profile', 2, 'bx_channels', '', '_bx_channels_page_block_title_profile_info', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:11:\"entity_info\";}', 0, 0, 1, 0),
+('bx_channels_view_profile', 3, 'bx_channels', '', '_bx_channels_page_block_title_fans', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:4:\"fans\";}', 0, 0, 1, 0),
+('bx_channels_view_profile', 3, 'bx_channels', '', '_bx_channels_page_block_title_admins', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:6:\"admins\";}', 0, 0, 1, 1),
+('bx_channels_view_profile', 4, 'bx_channels', '', '_bx_channels_page_block_title_profile_description', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:17:\"entity_text_block\";}', 0, 0, 1, 0),
+('bx_channels_view_profile', 4, 'bx_channels', '', '_bx_channels_page_block_title_profile_comments', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:15:\"entity_comments\";}', 0, 0, 0, 0);
+
+-- PAGE: view closed profile 
+
+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_channels_view_profile_closed', 'view-channel-profile-closed', '_bx_channels_page_title_sys_view_profile_closed', '_bx_channels_page_title_view_profile', 'bx_channels', 10, 2147483647, 1, 'page.php?i=view-channel-profile', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_channels_view_profile_closed', 2, 'bx_channels', '', '_bx_channels_page_block_title_profile_info', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:11:\"entity_info\";}', 0, 0, 1, 0),
+('bx_channels_view_profile_closed', 3, 'bx_channels', '', '_bx_channels_page_block_title_fans', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:4:\"fans\";}', 0, 0, 1, 0);
+
+-- PAGE: edit profile
+
+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_channels_edit_profile', 'edit-channel-profile', '_bx_channels_page_title_sys_edit_profile', '_bx_channels_page_title_edit_profile', 'bx_channels', 5, 2147483647, 1, 'page.php?i=edit-channel-profile', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_channels_edit_profile', 1, 'bx_channels', '_bx_channels_page_block_title_edit_profile', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:11:\"entity_edit\";}', 0, 0, 0);
+
+-- PAGE: edit profile cover
+
+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_channels_edit_profile_cover', 'edit-channel-cover', '_bx_channels_page_title_sys_edit_profile_cover', '_bx_channels_page_title_edit_profile_cover', 'bx_channels', 5, 2147483647, 1, 'page.php?i=edit-channel-cover', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_channels_edit_profile_cover', 1, 'bx_channels', '_bx_channels_page_block_title_edit_profile_cover', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:17:\"entity_edit_cover\";}', 0, 0, 0);
+
+-- PAGE: invite members
+
+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_channels_invite', 'invite-to-channel', '_bx_channels_page_title_sys_invite_to_channel', '_bx_channels_page_title_invite_to_channel', 'bx_channels', 5, 2147483647, 1, 'page.php?i=invite-to-channel', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_channels_invite', 1, 'bx_channels', '_bx_channels_page_block_title_invite_to_channel', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:13:\"entity_invite\";}', 0, 0, 0);
+
+-- PAGE: delete profile
+
+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_channels_delete_profile', 'delete-channel-profile', '_bx_channels_page_title_sys_delete_profile', '_bx_channels_page_title_delete_profile', 'bx_channels', 5, 2147483647, 1, 'page.php?i=delete-channel-profile', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_channels_delete_profile', 1, 'bx_channels', '_bx_channels_page_block_title_delete_profile', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:13:\"entity_delete\";}', 0, 0, 0);
+
+-- PAGE: profile info
+
+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_channels_profile_info', 'channel-profile-info', '_bx_channels_page_title_sys_profile_info', '_bx_channels_page_title_profile_info', 'bx_channels', 5, 2147483647, 1, 'page.php?i=channel-profile-info', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_channels_profile_info', 1, 'bx_channels', '_bx_channels_page_block_title_system_profile_info', '_bx_channels_page_block_title_profile_info_link', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:16:\"entity_info_full\";}', 0, 0, 1, 1),
+('bx_channels_profile_info', 1, 'bx_channels', '', '_bx_channels_page_block_title_profile_description', 13, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:17:\"entity_text_block\";}', 0, 0, 1, 2);
+
+-- PAGE: channel fans
+
+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_channels_fans', 'channel-fans', '_bx_channels_page_title_sys_channel_fans', '_bx_channels_page_title_channel_fans', 'bx_channels', 5, 2147483647, 1, 'page.php?i=channel-fans', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_channels_fans', 1, 'bx_channels', '_bx_channels_page_block_title_system_fans', '_bx_channels_page_block_title_fans_link', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_channels";s:6:"method";s:10:"fans_table";}', 0, 0, 1, 1);
+
+-- PAGE: view entry comments
+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_channels_profile_comments', '_bx_channels_page_title_sys_profile_comments', '_bx_channels_page_title_profile_comments', 'bx_channels', 5, 2147483647, 1, 'channel-profile-comments', '', '', '', '', 0, 1, 0, 'BxCnlPageEntry', 'modules/boonex/channels/classes/BxCnlPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_channels_profile_comments', 1, 'bx_channels', '_bx_channels_page_block_title_profile_comments', '_bx_channels_page_block_title_profile_comments_link', 11, 2147483647, 'service', 'a:2:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:15:\"entity_comments\";}', 0, 0, 0, 1);
+
+-- PAGE: module home
+
+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_channels_home', '_bx_channels_page_title_sys_recent', '_bx_channels_page_title_recent', 'bx_channels', 5, 2147483647, 1, 'channels-home', 'page.php?i=channels-home', '', '', '', 0, 1, 0, 'BxCnlPageBrowse', 'modules/boonex/channels/classes/BxCnlPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES
+('bx_channels_home', 1, 'bx_channels', '_bx_channels_page_block_title_featured_profiles', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_channels";s:6:"method";s:15:"browse_featured";s:6:"params";a:1:{i:0;s:7:"gallery";}}', 0, 1, 0),
+('bx_channels_home', 1, 'bx_channels', '_bx_channels_page_block_title_latest_profiles', 11, 2147483647, 'service', 'a:3:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:22:\"browse_recent_profiles\";s:6:"params";a:1:{i:0;b:1;}}', 0, 1, 1);
+
+-- PAGE: top profiles
+
+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_channels_top', '_bx_channels_page_title_sys_top', '_bx_channels_page_title_top', 'bx_channels', 5, 2147483647, 1, 'channels-top', 'page.php?i=channels-top', '', '', '', 0, 1, 0, 'BxCnlPageBrowse', 'modules/boonex/channels/classes/BxCnlPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_channels_top', 1, 'bx_channels', '_bx_channels_page_block_title_top_profiles', 11, 2147483647, 'service', 'a:3:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:19:\"browse_top_profiles\";s:6:"params";a:1:{i:0;b:1;}}', 0, 1, 0);
+
+-- PAGE: search for entries
+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_channels_search', '_bx_channels_page_title_sys_entries_search', '_bx_channels_page_title_entries_search', 'bx_channels', 5, 2147483647, 1, 'channels-search', 'page.php?i=channels-search', '', '', '', 0, 1, 0, 'BxCnlPageBrowse', 'modules/boonex/channels/classes/BxCnlPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_channels_search', 1, 'bx_channels', '_bx_channels_page_block_title_search_form', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:8:"get_form";s:6:"params";a:1:{i:0;a:1:{s:6:"object";s:11:"bx_channels";}}s:5:"class";s:27:"TemplSearchExtendedServices";}', 0, 1, 1, 1),
+('bx_channels_search', 1, 'bx_channels', '_bx_channels_page_block_title_search_results', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_results";s:6:"params";a:1:{i:0;a:2:{s:6:"object";s:11:"bx_channels";s:10:"show_empty";b:1;}}s:5:"class";s:27:"TemplSearchExtendedServices";}', 0, 1, 1, 2),
+('bx_channels_search', 1, 'bx_channels', '_bx_channels_page_block_title_search_form_cmts', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:8:"get_form";s:6:"params";a:1:{i:0;a:1:{s:6:"object";s:16:"bx_channels_cmts";}}s:5:"class";s:27:"TemplSearchExtendedServices";}', 0, 1, 0, 3),
+('bx_channels_search', 1, 'bx_channels', '_bx_channels_page_block_title_search_results_cmts', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:11:"get_results";s:6:"params";a:1:{i:0;a:2:{s:6:"object";s:16:"bx_channels_cmts";s:10:"show_empty";b:1;}}s:5:"class";s:27:"TemplSearchExtendedServices";}', 0, 1, 0, 4);
+
+-- PAGE: module manage all
+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_channels_administration', '_bx_channels_page_title_sys_manage_administration', '_bx_channels_page_title_manage', 'bx_channels', 5, 192, 1, 'channels-administration', 'page.php?i=channels-administration', '', '', '', 0, 1, 0, 'BxCnlPageBrowse', 'modules/boonex/channels/classes/BxCnlPageBrowse.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_channels_administration', 1, 'bx_channels', '_bx_channels_page_block_title_system_manage_administration', '_bx_channels_page_block_title_manage', 11, 192, 'service', 'a:3:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:12:\"manage_tools\";s:6:\"params\";a:1:{i:0;s:14:\"administration\";}}', 0, 1, 0);
+
+-- PAGE: user's channels
+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_channels_joined', 'joined-channels', '_bx_channels_page_title_sys_joined_entries', '_bx_channels_page_title_joined_entries', 'bx_channels', 5, 2147483647, 1, '', '', '', '', 0, 1, 0, 'BxCnlPageJoinedEntries', 'modules/boonex/channels/classes/BxCnlPageJoinedEntries.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('bx_channels_joined', 1, 'bx_channels', '_bx_channels_page_block_title_sys_entries_actions', '_bx_channels_page_block_title_entries_actions', 13, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_channels";s:6:"method";s:18:"my_entries_actions";}', 0, 0, 1, 1),
+('bx_channels_joined', 1, 'bx_channels', '_bx_channels_page_block_title_sys_entries_of_author', '_bx_channels_page_block_title_entries_of_author', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_channels";s:6:"method";s:22:"browse_created_entries";}', 0, 0, 0, 2),
+('bx_channels_joined', 1, 'bx_channels', '_bx_channels_page_block_title_sys_favorites_of_author', '_bx_channels_page_block_title_favorites_of_author', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_channels";s:6:"method";s:15:"browse_favorite";s:6:"params";a:1:{i:0;s:12:"{profile_id}";}}', 0, 1, 1, 3),
+('bx_channels_joined', 1, 'bx_channels', '_bx_channels_page_block_title_sys_joined_entries', '_bx_channels_page_block_title_joined_entries', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:11:"bx_channels";s:6:"method";s:21:"browse_joined_entries";s:6:"params";a:2:{i:0;i:0;i:1;b:1;}}', 0, 0, 1, 4);
+
+-- PAGE: add block to homepage
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = 'sys_home' AND `cell_id` = 1 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('sys_home', 1, 'bx_channels', '', '_bx_channels_page_block_title_latest_profiles', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_channels";s:6:"method";s:22:"browse_recent_profiles";}', 1, 0, 0, IFNULL(@iBlockOrder, 0) + 1),
+('sys_home', 1, 'bx_channels', '_bx_channels_page_block_title_sys_recommended_entries_view_showcase', '_bx_channels_page_block_title_recommended_entries_view_showcase', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:11:"bx_channels";s:6:"method";s:18:"browse_recommended";}', 1, 0, 0, IFNULL(@iBlockOrder, 0) + 2);
+-- PAGE: service blocks
+SET @iBlockOrder = (SELECT `order` FROM `sys_pages_blocks` WHERE `object` = '' AND `cell_id` = 0 ORDER BY `order` DESC LIMIT 1);
+INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES
+('', 0, 'bx_channels', '', '_bx_channels_page_block_title_categories', 11, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:15:"categories_list";s:6:"params";a:2:{i:0;s:16:"bx_channels_cats";i:1;a:2:{s:10:\"show_empty\";b:1;s:21:\"show_empty_categories\";b:1;}}s:5:"class";s:20:"TemplServiceCategory";}', 1, 1, 1, IFNULL(@iBlockOrder, 0) + 1),
+('', 0, 'bx_channels', '_bx_channels_page_block_title_sys_featured_entries_view_showcase', '_bx_channels_page_block_title_featured_entries_view_showcase', 11, 2147483647, 'service', 'a:3:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:15:\"browse_featured\";s:6:\"params\";a:3:{s:9:\"unit_view\";s:8:\"showcase\";s:13:\"empty_message\";b:0;s:13:\"ajax_paginate\";b:0;}}', 0, 1, 1, IFNULL(@iBlockOrder, 0) + 2),
+('', 0, 'bx_channels', '_bx_channels_page_block_title_sys_recommended_entries_view_showcase', '_bx_channels_page_block_title_recommended_entries_view_showcase', 11, 2147483647, 'service', 'a:3:{s:6:\"module\";s:11:\"bx_channels\";s:6:\"method\";s:18:\"browse_recommended\";s:6:\"params\";a:3:{s:9:\"unit_view\";s:8:\"showcase\";s:13:\"empty_message\";b:0;s:13:\"ajax_paginate\";b:0;}}', 0, 1, 1, IFNULL(@iBlockOrder, 0) + 3);
+
+-- MENU
+
+-- MENU: add to site menu
+
+SET @iSiteMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_site' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+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_site', 'bx_channels', 'channels-home', '_bx_channels_menu_item_title_system_entries_home', '_bx_channels_menu_item_title_entries_home', 'page.php?i=channels-home', '', '', 'hashtag col-red2', 'bx_channels_submenu', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
+
+-- MENU: add to homepage menu
+
+SET @iHomepageMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_homepage' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+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_homepage', 'bx_channels', 'channels-home', '_bx_channels_menu_item_title_system_entries_home', '_bx_channels_menu_item_title_entries_home', 'page.php?i=channels-home', '', '', 'hashtag col-red2', 'bx_channels_submenu', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
+
+-- MENU: add to "add content" menu
+
+SET @iAddMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_add_content_links' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
+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_add_content_links', 'bx_channels', 'create-channel-profile', '_bx_channels_menu_item_title_system_create_profile', '_bx_channels_menu_item_title_create_profile', 'page.php?i=create-channel-profile', '', '', 'hashtag col-red2', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
+
+-- MENU: view actions
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_channels_view_actions', '_bx_channels_menu_title_view_profile_actions', 'bx_channels_view_actions', 'bx_channels', 9, 0, 1, 'BxCnlMenuView', 'modules/boonex/channels/classes/BxCnlMenuView.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_channels_view_actions', 'bx_channels', '_bx_channels_menu_set_title_view_profile_actions', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `submenu_popup`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES 
+('bx_channels_view_actions', 'bx_channels', 'profile-fan-add', '_bx_channels_menu_item_title_system_become_fan', '{title_add_fan}', 'javascript:void(0)', 'bx_conn_action(this, \'bx_channels_fans\', \'add\', \'{profile_id}\')', '', 'user-plus', '', 0, 2147483647, 1, 0, 0, 5),
+('bx_channels_view_actions', 'bx_channels', 'profile-subscribe-add', '_bx_channels_menu_item_title_system_subscribe', '_bx_channels_menu_item_title_subscribe', 'javascript:void(0)', 'bx_conn_action(this, \'sys_profiles_subscriptions\', \'add\', \'{profile_id}\')', '', 'check', '', 0, 2147483647, 1, 0, 1, 20),
+('bx_channels_view_actions', 'bx_channels', 'profile-actions-more', '_bx_channels_menu_item_title_system_more_actions', '_bx_channels_menu_item_title_more_actions', 'javascript:void(0)', 'bx_menu_popup(''bx_channels_view_actions_more'', this, {}, {profile_id:{profile_id}});', '', 'cog', 'bx_channels_view_actions_more', 1, 2147483647, 1, 0, 1, 9999);
+
+-- MENU: view actions more
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_channels_view_actions_more', '_bx_channels_menu_title_view_profile_actions_more', 'bx_channels_view_actions_more', 'bx_channels', 6, 0, 1, 'BxCnlMenuView', 'modules/boonex/channels/classes/BxCnlMenuView.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_channels_view_actions_more', 'bx_channels', '_bx_channels_menu_set_title_view_profile_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_channels_view_actions_more', 'bx_channels', 'profile-fan-remove', '_bx_channels_menu_item_title_system_leave_channel', '{title_remove_fan}', 'javascript:void(0)', 'bx_conn_action(this, \'bx_channels_fans\', \'remove\', \'{profile_id}\')', '', 'user-times', '', 2147483647, 1, 0, 10),
+('bx_channels_view_actions_more', 'bx_channels', 'profile-subscribe-remove', '_bx_channels_menu_item_title_system_unsubscribe', '_bx_channels_menu_item_title_unsubscribe', 'javascript:void(0)', 'bx_conn_action(this, \'sys_profiles_subscriptions\', \'remove\', \'{profile_id}\')', '', 'check', '', 2147483647, 1, 0, 20),
+('bx_channels_view_actions_more', 'bx_channels', 'edit-channel-cover', '_bx_channels_menu_item_title_system_edit_cover', '_bx_channels_menu_item_title_edit_cover', 'page.php?i=edit-channel-cover&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 30),
+('bx_channels_view_actions_more', 'bx_channels', 'edit-channel-profile', '_bx_channels_menu_item_title_system_edit_profile', '_bx_channels_menu_item_title_edit_profile', 'page.php?i=edit-channel-profile&id={content_id}', '', '', 'pencil', '', 2147483647, 0, 0, 40),
+('bx_channels_view_actions_more', 'bx_channels', 'invite-to-channel', '_bx_channels_menu_item_title_system_invite', '_bx_channels_menu_item_title_invite', 'page.php?i=invite-to-channel&id={content_id}', '', '', 'user-plus', '', 2147483647, 1, 0, 42),
+('bx_channels_view_actions_more', 'bx_channels', 'delete-channel-profile', '_bx_channels_menu_item_title_system_delete_profile', '_bx_channels_menu_item_title_delete_profile', 'page.php?i=delete-channel-profile&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 50);
+
+-- MENU: actions menu for my entries
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_channels_my', '_bx_channels_menu_title_entries_my', 'bx_channels_my', 'bx_channels', 9, 0, 1, 'BxCnlMenu', 'modules/boonex/channels/classes/BxCnlMenu.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_channels_my', 'bx_channels', '_bx_channels_menu_set_title_entries_my', 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_channels_my', 'bx_channels', 'create-channel-profile', '_bx_channels_menu_item_title_system_create_profile', '_bx_channels_menu_item_title_create_profile', 'page.php?i=create-channel-profile', '', '', 'plus', '', 2147483647, 1, 0, 0);
+
+-- MENU: module sub-menu
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_channels_submenu', '_bx_channels_menu_title_submenu', 'bx_channels_submenu', 'bx_channels', 8, 0, 1, '', '');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_channels_submenu', 'bx_channels', '_bx_channels_menu_set_title_submenu', 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_channels_submenu', 'bx_channels', 'channels-home', '_bx_channels_menu_item_title_system_entries_recent', '_bx_channels_menu_item_title_entries_recent', 'page.php?i=channels-home', '', '', '', '', 2147483647, 1, 1, 1),
+('bx_channels_submenu', 'bx_channels', 'channels-top', '_bx_channels_menu_item_title_system_entries_top', '_bx_channels_menu_item_title_entries_top', 'page.php?i=channels-top', '', '', '', '', 2147483647, 1, 1, 2),
+('bx_channels_submenu', 'bx_channels', 'channels-search', '_bx_channels_menu_item_title_system_entries_search', '_bx_channels_menu_item_title_entries_search', 'page.php?i=channels-search', '', '', '', '', 2147483647, 1, 1, 3);
+
+-- MENU: view submenu
+
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_channels_view_submenu', '_bx_channels_menu_title_view_profile_submenu', 'bx_channels_view_submenu', 'bx_channels', 8, 0, 1, 'BxCnlMenuView', 'modules/boonex/channels/classes/BxCnlMenuView.php'),
+('bx_channels_view_submenu_cover', '_bx_channels_menu_title_view_profile_submenu_cover', 'bx_channels_view_submenu', 'bx_channels', 7, 0, 1, 'BxCnlMenuView', 'modules/boonex/channels/classes/BxCnlMenuView.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_channels_view_submenu', 'bx_channels', '_bx_channels_menu_set_title_view_profile_submenu', 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_channels_view_submenu', 'bx_channels', 'view-channel-profile', '_bx_channels_menu_item_title_system_view_profile_view', '_bx_channels_menu_item_title_view_profile_view', 'page.php?i=view-channel-profile&id={content_id}', '', '', 'hashtag col-red2', '', 2147483647, 1, 0, 1),
+('bx_channels_view_submenu', 'bx_channels', 'channel-profile-info', '_bx_channels_menu_item_title_system_view_profile_info', '_bx_channels_menu_item_title_view_profile_info', 'page.php?i=channel-profile-info&id={content_id}', '', '', 'info-circle col-gray', '', 2147483647, 1, 0, 2),
+('bx_channels_view_submenu', 'bx_channels', 'channel-profile-comments', '_bx_channels_menu_item_title_system_view_profile_comments', '_bx_channels_menu_item_title_view_profile_comments', 'page.php?i=channel-profile-comments&id={content_id}', '', '', '', '', 2147483647, 0, 0, 3),
+('bx_channels_view_submenu', 'bx_channels', 'channel-fans', '_bx_channels_menu_item_title_system_view_fans', '_bx_channels_menu_item_title_view_fans', 'page.php?i=channel-fans&profile_id={profile_id}', '', '', 'hashtag col-blue3', '', 2147483647, 1, 0, 4);
+
+-- MENU: custom menu for snippet meta info
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_channels_snippet_meta', '_sys_menu_title_snippet_meta', 'bx_channels_snippet_meta', 'bx_channels', 15, 0, 1, 'BxCnlMenuSnippetMeta', 'modules/boonex/channels/classes/BxCnlMenuSnippetMeta.php');
+
+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', 'join', '_sys_menu_item_title_system_sm_join', '_sys_menu_item_title_sm_join', '', '', '', '', '', 2147483647, 1, 0, 1, 1),
+('bx_channels_snippet_meta', 'bx_channels', 'leave', '_sys_menu_item_title_system_sm_leave', '_sys_menu_item_title_sm_leave', '', '', '', '', '', 2147483647, 0, 0, 1, 2),
+('bx_channels_snippet_meta', 'bx_channels', 'subscribe', '_sys_menu_item_title_system_sm_subscribe', '_sys_menu_item_title_sm_subscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 3),
+('bx_channels_snippet_meta', 'bx_channels', 'unsubscribe', '_sys_menu_item_title_system_sm_unsubscribe', '_sys_menu_item_title_sm_unsubscribe', '', '', '', '', '', 2147483647, 0, 0, 1, 4),
+('bx_channels_snippet_meta', 'bx_channels', 'date', '_sys_menu_item_title_system_sm_date', '_sys_menu_item_title_sm_date', '', '', '', '', '', 2147483647, 0, 0, 1, 5),
+('bx_channels_snippet_meta', 'bx_channels', 'tags', '_sys_menu_item_title_system_sm_tags', '_sys_menu_item_title_sm_tags', '', '', '', '', '', 2147483647, 0, 0, 1, 6),
+('bx_channels_snippet_meta', 'bx_channels', 'views', '_sys_menu_item_title_system_sm_views', '_sys_menu_item_title_sm_views', '', '', '', '', '', 2147483647, 0, 0, 1, 7),
+('bx_channels_snippet_meta', 'bx_channels', 'comments', '_sys_menu_item_title_system_sm_comments', '_sys_menu_item_title_sm_comments', '', '', '', '', '', 2147483647, 0, 0, 1, 8),
+('bx_channels_snippet_meta', 'bx_channels', 'members', '_sys_menu_item_title_system_sm_members', '_sys_menu_item_title_sm_members', '', '', '', '', '', 2147483647, 1, 0, 1, 9),
+('bx_channels_snippet_meta', 'bx_channels', 'subscribers', '_sys_menu_item_title_system_sm_subscribers', '_sys_menu_item_title_sm_subscribers', '', '', '', '', '', 2147483647, 0, 0, 1, 10);
+
+-- 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 
+('bx_channels_menu_manage_tools', '_bx_channels_menu_title_manage_tools', 'bx_channels_menu_manage_tools', 'bx_channels', 6, 0, 1, 'BxCnlMenuManageTools', 'modules/boonex/channels/classes/BxCnlMenuManageTools.php');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_channels_menu_manage_tools', 'bx_channels', '_bx_channels_menu_set_title_manage_tools', 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_channels_menu_manage_tools', 'bx_channels', 'delete', '_bx_channels_menu_item_title_system_delete', '_bx_channels_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
+('bx_channels_menu_manage_tools', 'bx_channels', 'delete-with-content', '_bx_channels_menu_item_title_system_delete_with_content', '_bx_channels_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2);
+
+-- MENU: dashboard manage tools
+SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
+('sys_account_dashboard_manage_tools', 'bx_channels', 'channels-administration', '_bx_channels_menu_item_title_system_admt_channels', '_bx_channels_menu_item_title_admt_channels', 'page.php?i=channels-administration', '', '_self', '', 'a:2:{s:6:"module";s:11:"bx_channels";s:6:"method";s:27:"get_menu_addon_manage_tools";}', '', 192, 1, 0, @iManageMenuOrder + 1);
+
+-- MENU: add menu item to profiles modules (trigger* menu sets are processed separately upon modules enable/disable)
+
+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 
+('trigger_profile_view_submenu', 'bx_channels', 'joined-channels', '_bx_channels_menu_item_title_system_view_joined_channels', '_bx_channels_menu_item_title_view_joined_channels', 'page.php?i=joined-channels&profile_id={profile_id}', '', '', 'hashtag col-red2', '', 2147483647, 1, 0, 0);
+
+-- ACL
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_channels', 'create entry', NULL, '_bx_channels_acl_action_create_profile', '', 1, 1);
+SET @iIdActionProfileCreate = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_channels', 'delete entry', NULL, '_bx_channels_acl_action_delete_profile', '', 1, 1);
+SET @iIdActionProfileDelete = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_channels', 'view entry', NULL, '_bx_channels_acl_action_view_profile', '', 1, 0);
+SET @iIdActionProfileView = LAST_INSERT_ID();
+
+INSERT INTO `sys_acl_actions` (`Module`, `Name`, `AdditionalParamName`, `Title`, `Desc`, `Countable`, `DisabledForLevels`) VALUES
+('bx_channels', 'edit any entry', NULL, '_bx_channels_acl_action_edit_any_profile', '', 1, 3);
+SET @iIdActionProfileEditAny = LAST_INSERT_ID();
+
+SET @iUnauthenticated = 1;
+SET @iAccount = 2;
+SET @iStandard = 3;
+SET @iUnconfirmed = 4;
+SET @iPending = 5;
+SET @iSuspended = 6;
+SET @iModerator = 7;
+SET @iAdministrator = 8;
+SET @iPremium = 9;
+
+INSERT INTO `sys_acl_matrix` (`IDLevel`, `IDAction`) VALUES
+
+-- profile create
+(@iAccount, @iIdActionProfileCreate),
+(@iStandard, @iIdActionProfileCreate),
+(@iUnconfirmed, @iIdActionProfileCreate),
+(@iPending, @iIdActionProfileCreate),
+(@iModerator, @iIdActionProfileCreate),
+(@iAdministrator, @iIdActionProfileCreate),
+(@iPremium, @iIdActionProfileCreate),
+
+-- profile delete
+(@iAccount, @iIdActionProfileDelete),
+(@iStandard, @iIdActionProfileDelete),
+(@iUnconfirmed, @iIdActionProfileDelete),
+(@iPending, @iIdActionProfileDelete),
+(@iModerator, @iIdActionProfileDelete),
+(@iAdministrator, @iIdActionProfileDelete),
+(@iPremium, @iIdActionProfileDelete),
+
+-- profile view
+(@iUnauthenticated, @iIdActionProfileView),
+(@iAccount, @iIdActionProfileView),
+(@iStandard, @iIdActionProfileView),
+(@iUnconfirmed, @iIdActionProfileView),
+(@iPending, @iIdActionProfileView),
+(@iModerator, @iIdActionProfileView),
+(@iAdministrator, @iIdActionProfileView),
+(@iPremium, @iIdActionProfileView),
+
+-- any profile edit
+(@iModerator, @iIdActionProfileEditAny),
+(@iAdministrator, @iIdActionProfileEditAny);
+
+
+-- COMMENTS
+INSERT INTO `sys_objects_cmts` (`Name`, `Module`, `Table`, `CharsPostMin`, `CharsPostMax`, `CharsDisplayMax`, `Html`, `PerView`, `PerViewReplies`, `BrowseType`, `IsBrowseSwitch`, `PostFormPosition`, `NumberOfLevels`, `IsDisplaySwitch`, `IsRatable`, `ViewingThreshold`, `IsOn`, `RootStylePrefix`, `BaseUrl`, `ObjectVote`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldAuthor`, `TriggerFieldTitle`, `TriggerFieldComments`, `ClassName`, `ClassFile`) VALUES
+('bx_channels', 'bx_channels', 'bx_cnl_cmts', 1, 5000, 1000, 3, 5, 3, 'tail', 1, 'bottom', 1, 1, 1, -3, 1, 'cmt', 'page.php?i=view-channel-profile&id={object_id}', '', 'bx_cnl_data', 'id', 'author', 'channel_name', 'comments', '', '');
+
+-- VIEWS
+INSERT INTO `sys_objects_view` (`name`, `table_track`, `period`, `is_on`, `trigger_table`, `trigger_field_id`, `trigger_field_author`, `trigger_field_count`, `class_name`, `class_file`) VALUES 
+('bx_channels', 'bx_cnl_views_track', '86400', '1', 'bx_cnl_data', 'id', 'author', 'views', '', '');
+
+-- VOTES
+INSERT INTO `sys_objects_vote` (`Name`, `TableMain`, `TableTrack`, `PostTimeout`, `MinValue`, `MaxValue`, `IsUndo`, `IsOn`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldAuthor`, `TriggerFieldRate`, `TriggerFieldRateCount`, `ClassName`, `ClassFile`) VALUES 
+('bx_channels', 'bx_cnl_votes', 'bx_cnl_votes_track', '604800', '1', '1', '0', '1', 'bx_cnl_data', 'id', 'author', 'rate', 'votes', '', '');
+
+-- SCORES
+INSERT INTO `sys_objects_score` (`name`, `module`, `table_main`, `table_track`, `post_timeout`, `is_on`, `trigger_table`, `trigger_field_id`, `trigger_field_author`, `trigger_field_score`, `trigger_field_cup`, `trigger_field_cdown`, `class_name`, `class_file`) VALUES 
+('bx_channels', 'bx_channels', 'bx_cnl_scores', 'bx_cnl_scores_track', '604800', '0', 'bx_cnl_data', 'id', 'author', 'score', 'sc_up', 'sc_down', '', '');
+
+-- REPORTS
+INSERT INTO `sys_objects_report` (`name`, `table_main`, `table_track`, `is_on`, `base_url`, `trigger_table`, `trigger_field_id`, `trigger_field_author`, `trigger_field_count`, `class_name`, `class_file`) VALUES 
+('bx_channels', 'bx_cnl_reports', 'bx_cnl_reports_track', '1', 'page.php?i=view-channel-profile&id={object_id}', 'bx_cnl_data', 'id', 'author', 'reports', '', '');
+
+-- FAFORITES
+INSERT INTO `sys_objects_favorite` (`name`, `table_track`, `is_on`, `is_undo`, `is_public`, `base_url`, `trigger_table`, `trigger_field_id`, `trigger_field_author`, `trigger_field_count`, `class_name`, `class_file`) VALUES 
+('bx_channels', 'bx_cnl_favorites_track', '1', '1', '1', 'page.php?i=view-channel-profile&id={object_id}', 'bx_cnl_data', 'id', 'author', 'favorites', '', '');
+
+-- FEATURED
+INSERT INTO `sys_objects_feature` (`name`, `is_on`, `is_undo`, `base_url`, `trigger_table`, `trigger_field_id`, `trigger_field_author`, `trigger_field_flag`, `class_name`, `class_file`) VALUES 
+('bx_channels', '1', '1', 'page.php?i=view-channel-profile&id={object_id}', 'bx_cnl_data', 'id', 'author', 'featured', '', '');
+
+-- METATAGS
+INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations`, `table_mentions`, `override_class_name`, `override_class_file`) VALUES
+('bx_channels', 'bx_cnl_meta_keywords', '', 'bx_cnl_meta_mentions', '', '');
+
+-- SEARCH
+SET @iSearchOrder = (SELECT IFNULL(MAX(`Order`), 0) FROM `sys_objects_search`);
+INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `Order`, `ClassName`, `ClassPath`) VALUES
+('bx_channels', '_bx_channels', @iSearchOrder + 1, 'BxCnlSearchResult', 'modules/boonex/channels/classes/BxCnlSearchResult.php');
+
+-- CONNECTIONS
+INSERT INTO `sys_objects_connection` (`object`, `table`, `type`, `override_class_name`, `override_class_file`) VALUES
+('bx_channels_fans', 'bx_cnl_fans', 'mutual', '', '');
+
+-- STATS
+SET @iMaxOrderStats = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_statistics`);
+INSERT INTO `sys_statistics` (`module`, `name`, `title`, `link`, `icon`, `query`, `order`) VALUES 
+('bx_channels', 'bx_channels', '_bx_channels', 'page.php?i=channels-home', 'hashtag col-red2', 'SELECT COUNT(*) FROM `bx_cnl_data` AS `td` LEFT JOIN `sys_profiles` AS `tp` ON `td`.`id` = `tp`.`content_id` AND `tp`.`type`=''bx_channels'' WHERE 1 AND `tp`.`status`=''active''', @iMaxOrderStats + 1);
+
+-- CHARTS
+SET @iMaxOrderCharts = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_objects_chart`);
+INSERT INTO `sys_objects_chart` (`object`, `title`, `table`, `field_date_ts`, `field_date_dt`, `field_status`, `query`, `active`, `order`, `class_name`, `class_file`) VALUES
+('bx_channels_growth', '_bx_channels_chart_growth', 'bx_cnl_data', 'added', '', '', 'SELECT {field_date_formatted} AS `period`, COUNT(*) AS {object} FROM {table} LEFT JOIN `sys_profiles` AS `tp` ON {table}.`id` = `tp`.`content_id` AND `tp`.`type`=''bx_channels'' WHERE 1 AND `tp`.`status`=''active'' {where_inteval} GROUP BY `period` ORDER BY {table}.{field_date} ASC', 1, @iMaxOrderCharts + 1, 'BxDolChartGrowth', ''),
+('bx_channels_growth_speed', '_bx_channels_chart_growth_speed', 'bx_cnl_data', 'added', '', '', 'SELECT {field_date_formatted} AS `period`, COUNT(*) AS {object} FROM {table} LEFT JOIN `sys_profiles` AS `tp` ON {table}.`id` = `tp`.`content_id` AND `tp`.`type`=''bx_channels'' WHERE 1 AND `tp`.`status`=''active'' {where_inteval} GROUP BY `period` ORDER BY {table}.{field_date} ASC', 1, @iMaxOrderCharts + 2, 'BxDolChartGrowthSpeed', '');
+
+-- GRID: connections
+INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES
+('bx_channels_fans', 'Sql', 'SELECT `p`.`id`, `c`.`added`, `c`.`mutual` FROM `sys_profiles` AS `p` INNER JOIN `sys_accounts` AS `a` ON (`a`.`id` = `p`.`account_id`) {join_connections}', 'sys_profiles', 'id', 'c`.`added', '', '', 10, NULL, 'start', '', 'name,email', '', 'auto', '', '', 2147483647, 'BxCnlGridConnections', 'modules/boonex/channels/classes/BxCnlGridConnections.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `params`, `order`) VALUES
+('bx_channels_fans', 'name', '_sys_name', '50%', '', 10),
+('bx_channels_fans', 'actions', '', '50%', '', 20);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
+('bx_channels_fans', 'single', 'accept', '_sys_accept', '', 0, 10),
+('bx_channels_fans', 'single', 'to_admins', '_bx_channels_txt_to_admins', '', 0, 20),
+('bx_channels_fans', 'single', 'from_admins', '_bx_channels_txt_from_admins', '', 0, 30),
+('bx_channels_fans', 'single', 'delete', '', 'remove', 1, 40);
+
+-- GRIDS: administration
+
+INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES
+('bx_channels_administration', 'Sql', 'SELECT `td`.*, `td`.`channel_name` AS `name`, `ta`.`email` AS `account`, `td`.`added` AS `added_ts`, `tp`.`status` AS `status` FROM `bx_cnl_data` AS `td` LEFT JOIN `sys_profiles` AS `tp` ON `td`.`id`=`tp`.`content_id` AND `tp`.`type`=''bx_channels'' LEFT JOIN `sys_accounts` AS `ta` ON `tp`.`account_id`=`ta`.`id` WHERE 1 ', 'bx_cnl_data', 'id', 'added', 'status', '', 20, NULL, 'start', '', 'channel_name', '', 'like', 'reports', '', 192, 'BxCnlGridAdministration', 'modules/boonex/channels/classes/BxCnlGridAdministration.php'),
+('bx_channels_common', 'Sql', 'SELECT `td`.*, `td`.`channel_name` AS `name`, `ta`.`email` AS `account`, `td`.`added` AS `added_ts`, `tp`.`status` AS `status` FROM `bx_cnl_data` AS `td` LEFT JOIN `sys_profiles` AS `tp` ON `td`.`id`=`tp`.`content_id` AND `tp`.`type`=''bx_channels'' LEFT JOIN `sys_accounts` AS `ta` ON `tp`.`account_id`=`ta`.`id` WHERE 1 ', 'bx_cnl_data', 'id', 'added', 'status', '', 20, NULL, 'start', '', 'channel_name', '', 'like', '', '', 2147483647, 'BxCnlGridCommon', 'modules/boonex/channels/classes/BxCnlGridCommon.php');
+
+INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable`, `chars_limit`, `params`, `order`) VALUES
+('bx_channels_administration', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
+('bx_channels_administration', 'switcher', '_bx_channels_grid_column_title_adm_active', '8%', 0, '', '', 2),
+('bx_channels_administration', 'reports', '_sys_txt_reports_title', '5%', 0, '', '', 3),
+('bx_channels_administration', 'name', '_bx_channels_grid_column_title_adm_name', '25%', 0, '', '', 4),
+('bx_channels_administration', 'added_ts', '_bx_channels_grid_column_title_adm_added', '20%', 1, '25', '', 5),
+('bx_channels_administration', 'account', '_bx_channels_grid_column_title_adm_account', '20%', 0, '25', '', 6),
+('bx_channels_administration', 'actions', '', '20%', 0, '', '', 7),
+('bx_channels_common', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
+('bx_channels_common', 'name', '_bx_channels_grid_column_title_adm_name', '48%', 0, '', '', 2),
+('bx_channels_common', 'added_ts', '_bx_channels_grid_column_title_adm_added', '30%', 1, '25', '', 3),
+('bx_channels_common', 'actions', '', '20%', 0, '', '', 4);
+
+INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
+('bx_channels_administration', 'bulk', 'delete', '_bx_channels_grid_action_title_adm_delete', '', 0, 1, 2),
+('bx_channels_administration', 'bulk', 'delete_with_content', '_bx_channels_grid_action_title_adm_delete_with_content', '', 0, 1, 3),
+('bx_channels_administration', 'single', 'settings', '_bx_channels_grid_action_title_adm_more_actions', 'cog', 1, 0, 2),
+('bx_channels_common', 'bulk', 'delete', '_bx_channels_grid_action_title_adm_delete', '', 0, 1, 1),
+('bx_channels_common', 'bulk', 'delete_with_content', '_bx_channels_grid_action_title_adm_delete_with_content', '', 0, 1, 2),
+('bx_channels_common', 'single', 'settings', '_bx_channels_grid_action_title_adm_more_actions', 'cog', 1, 0, 1);
+
+
+-- ALERTS
+
+INSERT INTO `sys_alerts_handlers` (`name`, `class`, `file`, `service_call`) VALUES 
+('bx_channels', 'BxCnlAlertsResponse', 'modules/boonex/channels/classes/BxCnlAlertsResponse.php', '');
+SET @iHandler := LAST_INSERT_ID();
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('system', 'save_setting', @iHandler),
+('bx_timeline', 'post_common', @iHandler),
+('bx_channels_pics', 'file_deleted', @iHandler),
+('bx_channels_fans', 'connection_added', @iHandler),
+('bx_channels_fans', 'connection_removed', @iHandler),
+('profile', 'delete', @iHandler),
+('bx_channels', 'fan_added', @iHandler),
+('bx_channels', 'join_invitation', @iHandler),
+('bx_channels', 'join_request', @iHandler),
+('bx_channels', 'join_request_accepted', @iHandler),
+('bx_channels', 'timeline_view', @iHandler),
+('bx_channels', 'timeline_post', @iHandler),
+('bx_channels', 'timeline_delete', @iHandler),
+('bx_channels', 'timeline_comment', @iHandler),
+('bx_channels', 'timeline_vote', @iHandler),
+('bx_channels', 'timeline_report', @iHandler),
+('bx_channels', 'timeline_repost', @iHandler),
+('meta_keyword', 'added', @iHandler);
+
+
+-- PRIVACY 
+
+INSERT INTO `sys_objects_privacy` (`object`, `module`, `action`, `title`, `default_group`, `spaces`, `table`, `table_field_id`, `table_field_author`, `override_class_name`, `override_class_file`) VALUES
+('bx_channels_allow_view_to', 'bx_channels', 'view', '_bx_channels_form_profile_input_allow_view_to', '3', '', 'bx_cnl_data', 'id', 'author', 'BxCnlPrivacy', 'modules/boonex/channels/classes/BxCnlPrivacy.php'),
+('bx_channels_allow_view_notification_to', 'bx_channels', 'view_event', '_bx_channels_form_profile_input_allow_view_notification_to', '3', '', 'bx_notifications_events', 'id', 'object_owner_id', 'BxCnlPrivacyNotifications', 'modules/boonex/channels/classes/BxCnlPrivacyNotifications.php');
+
+-- EMAIL TEMPLATES
+
+INSERT INTO `sys_email_templates` (`Module`, `NameSystem`, `Name`, `Subject`, `Body`) VALUES
+('bx_channels', '_bx_channels_email_join_request', 'bx_channels_join_request', '_bx_channels_email_join_request_subject', '_bx_channels_email_join_request_body'),
+('bx_channels', '_bx_channels_email_join_reject', 'bx_channels_join_reject', '_bx_channels_email_join_reject_subject', '_bx_channels_email_join_reject_body'),
+('bx_channels', '_bx_channels_email_join_confirm', 'bx_channels_join_confirm', '_bx_channels_email_join_confirm_subject', '_bx_channels_email_join_confirm_body'),
+('bx_channels', '_bx_channels_email_fan_remove', 'bx_channels_fan_remove', '_bx_channels_email_fan_remove_subject', '_bx_channels_email_fan_remove_body'),
+('bx_channels', '_bx_channels_email_fan_become_admin', 'bx_channels_fan_become_admin', '_bx_channels_email_fan_become_admin_subject', '_bx_channels_email_fan_become_admin_body'),
+('bx_channels', '_bx_channels_email_admin_become_fan', 'bx_channels_admin_become_fan', '_bx_channels_email_admin_become_fan_subject', '_bx_channels_email_admin_become_fan_body'),
+('bx_channels', '_bx_channels_email_invitation', 'bx_channels_invitation', '_bx_channels_email_invitation_subject', '_bx_channels_email_invitation_body');
+
+-- UPLOADERS
+
+INSERT INTO `sys_objects_uploader` (`object`, `active`, `override_class_name`, `override_class_file`) VALUES
+('bx_channels_cover_crop', 1, 'BxCnlUploaderCoverCrop', 'modules/boonex/channels/classes/BxCnlUploaderCoverCrop.php'),
+('bx_channels_picture_crop', 1, 'BxCnlUploaderPictureCrop', 'modules/boonex/channels/classes/BxCnlUploaderPictureCrop.php');

+ 303 - 0
modules/boonex/channels/install/sql/install.sql

@@ -0,0 +1,303 @@
+SET @sStorageEngine = (SELECT `value` FROM `sys_options` WHERE `name` = 'sys_storage_default');
+
+-- TABLE: PROFILES
+CREATE TABLE IF NOT EXISTS `bx_cnl_data` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `author` int(10) unsigned NOT NULL,
+  `added` int(11) NOT NULL,
+  `changed` int(11) NOT NULL,
+  `picture` int(11) NOT NULL,
+  `cover` int(11) NOT NULL,
+  `channel_name` varchar(191) NOT NULL,
+  `views` int(11) NOT NULL default '0',
+  `rate` float NOT NULL default '0',
+  `votes` int(11) NOT NULL default '0',
+  `score` int(11) NOT NULL default '0',
+  `sc_up` int(11) NOT NULL default '0',
+  `sc_down` int(11) NOT NULL default '0',
+  `favorites` int(11) NOT NULL default '0',
+  `comments` int(11) NOT NULL default '0',
+  `reports` int(11) NOT NULL default '0',
+  `featured` int(11) NOT NULL default '0',
+  `join_confirmation` tinyint(4) NOT NULL DEFAULT '1',
+  `allow_view_to` varchar(255) DEFAULT '3',
+  PRIMARY KEY (`id`),
+  UNIQUE INDEX channel_name (`channel_name`),
+  FULLTEXT KEY `search_fields` (`channel_name`)
+);
+
+-- TABLE: STORAGES & TRANSCODERS
+CREATE TABLE `bx_cnl_pics` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `profile_id` int(10) unsigned NOT NULL,
+  `remote_id` varchar(128) NOT NULL,
+  `path` varchar(255) NOT NULL,
+  `file_name` varchar(255) NOT NULL,
+  `mime_type` varchar(128) NOT NULL,
+  `ext` varchar(32) NOT NULL,
+  `size` int(11) NOT NULL,
+  `added` int(11) NOT NULL,
+  `modified` int(11) NOT NULL,
+  `private` int(11) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `remote_id` (`remote_id`)
+);
+
+CREATE TABLE `bx_cnl_pics_resized` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `profile_id` int(10) unsigned NOT NULL,
+  `remote_id` varchar(128) NOT NULL,
+  `path` varchar(255) NOT NULL,
+  `file_name` varchar(255) NOT NULL,
+  `mime_type` varchar(128) NOT NULL,
+  `ext` varchar(32) NOT NULL,
+  `size` int(11) NOT NULL,
+  `added` int(11) NOT NULL,
+  `modified` int(11) NOT NULL,
+  `private` int(11) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `remote_id` (`remote_id`)
+);
+
+-- TABLE: comments
+CREATE TABLE IF NOT EXISTS `bx_cnl_cmts` (
+  `cmt_id` int(11) NOT NULL AUTO_INCREMENT,
+  `cmt_parent_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_vparent_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_object_id` int(11) NOT NULL DEFAULT '0',
+  `cmt_author_id` int(10) unsigned NOT NULL DEFAULT '0',
+  `cmt_level` int(11) NOT NULL DEFAULT '0',
+  `cmt_text` text NOT NULL,
+  `cmt_mood` tinyint(4) NOT NULL DEFAULT '0',
+  `cmt_rate` int(11) NOT NULL DEFAULT '0',
+  `cmt_rate_count` int(11) NOT NULL DEFAULT '0',
+  `cmt_time` int(11) unsigned NOT NULL DEFAULT '0',
+  `cmt_replies` int(11) NOT NULL DEFAULT '0',
+  PRIMARY KEY (`cmt_id`),
+  KEY `cmt_object_id` (`cmt_object_id`,`cmt_parent_id`),
+  FULLTEXT KEY `search_fields` (`cmt_text`)
+);
+
+-- TABLE: VIEWS
+CREATE TABLE `bx_cnl_views_track` (
+  `object_id` int(11) NOT NULL default '0',
+  `viewer_id` int(11) NOT NULL default '0',
+  `viewer_nip` int(11) unsigned NOT NULL default '0',
+  `date` int(11) NOT NULL default '0',
+  KEY `id` (`object_id`,`viewer_id`,`viewer_nip`)
+);
+
+-- TABLE: VOTES
+CREATE TABLE IF NOT EXISTS `bx_cnl_votes` (
+  `object_id` int(11) NOT NULL default '0',
+  `count` int(11) NOT NULL default '0',
+  `sum` int(11) NOT NULL default '0',
+  UNIQUE KEY `object_id` (`object_id`)
+);
+
+CREATE TABLE IF NOT EXISTS `bx_cnl_votes_track` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `object_id` int(11) NOT NULL default '0',
+  `author_id` int(11) NOT NULL default '0',
+  `author_nip` int(11) unsigned NOT NULL default '0',
+  `value` tinyint(4) NOT NULL default '0',
+  `date` int(11) NOT NULL default '0',
+  PRIMARY KEY (`id`),
+  KEY `vote` (`object_id`, `author_nip`)
+);
+
+-- TABLE: REPORTS
+CREATE TABLE IF NOT EXISTS `bx_cnl_reports` (
+  `object_id` int(11) NOT NULL default '0',
+  `count` int(11) NOT NULL default '0',
+  UNIQUE KEY `object_id` (`object_id`)
+);
+
+CREATE TABLE IF NOT EXISTS `bx_cnl_reports_track` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `object_id` int(11) NOT NULL default '0',
+  `author_id` int(11) NOT NULL default '0',
+  `author_nip` int(11) unsigned NOT NULL default '0',
+  `type` varchar(32) NOT NULL default '',
+  `text` text NOT NULL default '',
+  `date` int(11) NOT NULL default '0',
+  PRIMARY KEY (`id`),
+  KEY `report` (`object_id`, `author_nip`)
+);
+
+-- TABLE: metas
+CREATE TABLE `bx_cnl_meta_keywords` (
+  `object_id` int(10) unsigned NOT NULL,
+  `keyword` varchar(255) NOT NULL,
+  KEY `object_id` (`object_id`),
+  KEY `keyword` (`keyword`)
+);
+
+CREATE TABLE `bx_cnl_meta_mentions` (
+  `object_id` int(10) unsigned NOT NULL,
+  `profile_id` int(10) unsigned NOT NULL,
+  KEY `object_id` (`object_id`),
+  KEY `profile_id` (`profile_id`)
+);
+
+-- TABLE: fans
+CREATE TABLE IF NOT EXISTS `bx_cnl_fans` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `initiator` int(11) NOT NULL,
+  `content` int(11) NOT NULL,
+  `mutual` tinyint(4) NOT NULL,
+  `added` int(10) unsigned NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `initiator` (`initiator`,`content`),
+  KEY `content` (`content`)
+);
+
+-- TABLE: admins
+CREATE TABLE IF NOT EXISTS `bx_cnl_admins` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `group_profile_id` int(10) unsigned NOT NULL,
+  `fan_id` int(10) unsigned NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `admin` (`group_profile_id`,`fan_id`)
+);
+
+-- TABLE: favorites
+CREATE TABLE `bx_cnl_favorites_track` (
+  `object_id` int(11) NOT NULL default '0',
+  `author_id` int(11) NOT NULL default '0',
+  `date` int(11) NOT NULL default '0',
+  KEY `id` (`object_id`,`author_id`)
+);
+
+-- TABLE: scores
+CREATE TABLE IF NOT EXISTS `bx_cnl_scores` (
+  `object_id` int(11) NOT NULL default '0',
+  `count_up` int(11) NOT NULL default '0',
+  `count_down` int(11) NOT NULL default '0',
+  UNIQUE KEY `object_id` (`object_id`)
+);
+
+CREATE TABLE IF NOT EXISTS `bx_cnl_scores_track` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `object_id` int(11) NOT NULL default '0',
+  `author_id` int(11) NOT NULL default '0',
+  `author_nip` int(11) unsigned NOT NULL default '0',
+  `type` varchar(8) NOT NULL default '',
+  `date` int(11) NOT NULL default '0',
+  PRIMARY KEY (`id`),
+  KEY `vote` (`object_id`, `author_nip`)
+);
+
+
+-- STORAGES & TRANSCODERS
+INSERT INTO `sys_objects_storage` (`object`, `engine`, `params`, `token_life`, `cache_control`, `levels`, `table_files`, `ext_mode`, `ext_allow`, `ext_deny`, `quota_size`, `current_size`, `quota_number`, `current_number`, `max_file_size`, `ts`) VALUES
+('bx_channels_pics', @sStorageEngine, '', 360, 2592000, 3, 'bx_cnl_pics', 'allow-deny', 'jpg,jpeg,jpe,gif,png', '', 0, 0, 0, 0, 0, 0),
+('bx_channels_pics_resized', @sStorageEngine, '', 360, 2592000, 3, 'bx_cnl_pics_resized', 'allow-deny', 'jpg,jpeg,jpe,gif,png', '', 0, 0, 0, 0, 0, 0);
+
+INSERT INTO `sys_objects_transcoder` (`object`, `storage_object`, `source_type`, `source_params`, `private`, `atime_tracking`, `atime_pruning`, `ts`) VALUES 
+('bx_channels_icon', 'bx_channels_pics_resized', 'Storage', 'a:1:{s:6:"object";s:16:"bx_channels_pics";}', 'no', '1', '2592000', '0'),
+('bx_channels_thumb', 'bx_channels_pics_resized', 'Storage', 'a:1:{s:6:"object";s:16:"bx_channels_pics";}', 'no', '1', '2592000', '0'),
+('bx_channels_avatar', 'bx_channels_pics_resized', 'Storage', 'a:1:{s:6:"object";s:16:"bx_channels_pics";}', 'no', '1', '2592000', '0'),
+('bx_channels_picture', 'bx_channels_pics_resized', 'Storage', 'a:1:{s:6:"object";s:16:"bx_channels_pics";}', 'no', '1', '2592000', '0'),
+('bx_channels_cover', 'bx_channels_pics_resized', 'Storage', 'a:1:{s:6:"object";s:16:"bx_channels_pics";}', 'no', '1', '2592000', '0'),
+('bx_channels_cover_thumb', 'bx_channels_pics_resized', 'Storage', 'a:1:{s:6:"object";s:16:"bx_channels_pics";}', 'no', '1', '2592000', '0'),
+('bx_channels_gallery', 'bx_channels_pics_resized', 'Storage', 'a:1:{s:6:"object";s:16:"bx_channels_pics";}', 'no', '1', '2592000', '0');
+
+INSERT INTO `sys_transcoder_filters` (`transcoder_object`, `filter`, `filter_params`, `order`) VALUES 
+('bx_channels_icon', 'Resize', 'a:3:{s:1:"w";s:2:"32";s:1:"h";s:2:"32";s:13:"square_resize";s:1:"1";}', '0'),
+('bx_channels_thumb', 'Resize', 'a:3:{s:1:"w";s:2:"48";s:1:"h";s:2:"48";s:13:"square_resize";s:1:"1";}', '0'),
+('bx_channels_avatar', 'Resize', 'a:3:{s:1:"w";s:2:"96";s:1:"h";s:2:"96";s:13:"square_resize";s:1:"1";}', '0'),
+('bx_channels_picture', 'Resize', 'a:3:{s:1:"w";s:4:"1024";s:1:"h";s:4:"1024";s:13:"square_resize";s:1:"0";}', '0'),
+('bx_channels_cover', 'Resize', 'a:1:{s:1:"w";s:4:"2000";}', '0'),
+('bx_channels_cover_thumb', 'Resize', 'a:3:{s:1:"w";s:2:"48";s:1:"h";s:2:"48";s:13:"square_resize";s:1:"1";}', '0'),
+('bx_channels_gallery', 'Resize', 'a:1:{s:1:"w";s:3:"500";}', '0');
+
+-- FORMS
+INSERT INTO `sys_objects_form`(`object`, `module`, `title`, `action`, `form_attrs`, `table`, `key`, `uri`, `uri_title`, `submit_name`, `params`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_channel', 'bx_channels', '_bx_channels_form_profile', '', 'a:1:{s:7:\"enctype\";s:19:\"multipart/form-data\";}', 'bx_cnl_data', 'id', '', '', 'do_submit', '', 0, 1, 'BxCnlFormEntry', 'modules/boonex/channels/classes/BxCnlFormEntry.php');
+
+INSERT INTO `sys_form_displays`(`object`, `display_name`, `module`, `view_mode`, `title`) VALUES 
+('bx_channel', 'bx_channel_add', 'bx_channels', 0, '_bx_channels_form_profile_display_add'),
+('bx_channel', 'bx_channel_delete', 'bx_channels', 0, '_bx_channels_form_profile_display_delete'),
+('bx_channel', 'bx_channel_edit', 'bx_channels', 0, '_bx_channels_form_profile_display_edit'),
+('bx_channel', 'bx_channel_edit_cover', 'bx_channels', 0, '_bx_channels_form_profile_display_edit_cover'),
+('bx_channel', 'bx_channel_view', 'bx_channels', 1, '_bx_channels_form_profile_display_view'),
+('bx_channel', 'bx_channel_view_full', 'bx_channels', 1, '_bx_channels_form_profile_display_view_full'),
+('bx_channel', 'bx_channel_invite', 'bx_channels', 0, '_bx_channels_form_profile_display_invite');
+
+INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `checked`, `type`, `caption_system`, `caption`, `info`, `required`, `collapsed`, `html`, `attrs`, `attrs_tr`, `attrs_wrapper`, `checker_func`, `checker_params`, `checker_error`, `db_pass`, `db_params`, `editable`, `deletable`) VALUES 
+('bx_channel', 'bx_channels', 'delete_confirm', 1, '', 0, 'checkbox', '_bx_channels_form_profile_input_sys_delete_confirm', '_bx_channels_form_profile_input_delete_confirm', '_bx_channels_form_profile_input_delete_confirm_info', 1, 0, 0, '', '', '', 'avail', '', '_bx_channels_form_profile_input_delete_confirm_error', '', '', 1, 0),
+('bx_channel', 'bx_channels', 'do_submit', '_sys_form_account_input_submit', '', 0, 'submit', '_bx_channels_form_profile_input_sys_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_channel', 'bx_channels', 'channel_name', '', '', 0, 'text', '_bx_channels_form_profile_input_sys_channel_name', '_bx_channels_form_profile_input_channel_name', '', 1, 0, 0, '', '', '', 'avail', '', '_bx_channels_form_profile_input_channel_name_err', 'Xss', '', 1, 0),
+('bx_channel', 'bx_channels', 'initial_members', '', '', 0, 'custom', '_bx_channels_form_profile_input_sys_initial_members', '_bx_channels_form_profile_input_initial_members', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 1),
+('bx_channel', 'bx_channels', 'join_confirmation', 1, '', 1, 'switcher', '_bx_channels_form_profile_input_sys_join_confirm', '_bx_channels_form_profile_input_join_confirm', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
+('bx_channel', 'bx_channels', 'cover', 'a:1:{i:0;s:22:"bx_channels_cover_crop";}', 'a:1:{s:22:"bx_channels_cover_crop";s:24:"_sys_uploader_crop_title";}', 0, 'files', '_bx_channels_form_profile_input_sys_cover', '_bx_channels_form_profile_input_cover', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_channel', 'bx_channels', 'picture', 'a:1:{i:0;s:24:"bx_channels_picture_crop";}', 'a:1:{s:24:"bx_channels_picture_crop";s:24:"_sys_uploader_crop_title";}', 0, 'files', '_bx_channels_form_profile_input_sys_picture', '_bx_channels_form_profile_input_picture', '', 0, 0, 0, '', '', '', '', '', '_bx_channels_form_profile_input_picture_err', '', '', 1, 0);
+
+INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
+('bx_channel_add', 'delete_confirm', 2147483647, 0, 3),
+('bx_channel_add', 'cover', 2147483647, 0, 4),
+('bx_channel_add', 'initial_members', 2147483647, 1, 5),
+('bx_channel_add', 'picture', 2147483647, 1, 6),
+('bx_channel_add', 'channel_name', 2147483647, 1, 7),
+('bx_channel_add', 'join_confirmation', 2147483647, 1, 8),
+('bx_channel_add', 'do_submit', 2147483647, 1, 9),
+
+('bx_channel_invite', 'initial_members', 2147483647, 1, 1),
+('bx_channel_invite', 'do_submit', 2147483647, 1, 2),
+
+('bx_channel_delete', 'delete_confirm', 2147483647, 1, 0),
+('bx_channel_delete', 'cover', 2147483647, 0, 0),
+('bx_channel_delete', 'picture', 2147483647, 0, 0),
+('bx_channel_delete', 'do_submit', 2147483647, 1, 1),
+('bx_channel_delete', 'channel_name', 2147483647, 0, 2),
+
+('bx_channel_edit', 'delete_confirm', 2147483647, 0, 2),
+('bx_channel_edit', 'cover', 2147483647, 0, 3),
+('bx_channel_edit', 'picture', 2147483647, 1, 4),
+('bx_channel_edit', 'channel_name', 2147483647, 1, 5),
+('bx_channel_edit', 'join_confirmation', 2147483647, 1, 6),
+('bx_channel_edit', 'do_submit', 2147483647, 1, 7),
+
+('bx_channel_edit_cover', 'join_confirmation', 2147483647, 0, 0),
+('bx_channel_edit_cover', 'delete_confirm', 2147483647, 0, 1),
+('bx_channel_edit_cover', 'channel_name', 2147483647, 0, 2),
+('bx_channel_edit_cover', 'picture', 2147483647, 0, 3),
+('bx_channel_edit_cover', 'cover', 2147483647, 1, 4),
+('bx_channel_edit_cover', 'do_submit', 2147483647, 1, 5),
+
+('bx_channel_view', 'delete_confirm', 2147483647, 0, 3),
+('bx_channel_view', 'picture', 2147483647, 0, 4),
+('bx_channel_view', 'cover', 2147483647, 0, 5),
+('bx_channel_view', 'do_submit', 2147483647, 0, 6),
+('bx_channel_view', 'channel_name', 2147483647, 1, 7),
+
+('bx_channel_view_full', 'channel_name', 2147483647, 1, 1);
+
+
+-- CONTENT INFO
+INSERT INTO `sys_objects_content_info` (`name`, `title`, `alert_unit`, `alert_action_add`, `alert_action_update`, `alert_action_delete`, `class_name`, `class_file`) VALUES
+('bx_channels', '_bx_channels', 'bx_channels', 'added', 'edited', 'deleted', '', ''),
+('bx_channels_cmts', '_bx_channels_cmts', 'bx_channels', 'commentPost', 'commentUpdated', 'commentRemoved', 'BxDolContentInfoCmts', '');
+
+INSERT INTO `sys_content_info_grids` (`object`, `grid_object`, `grid_field_id`, `condition`, `selection`) VALUES
+('bx_channels', 'bx_channels_administration', 'td`.`id', '', ''),
+('bx_channels', 'bx_channels_common', 'td`.`id', '', '');
+
+-- SEARCH EXTENDED
+INSERT INTO `sys_objects_search_extended` (`object`, `object_content_info`, `module`, `title`, `active`, `class_name`, `class_file`) VALUES
+('bx_channels', 'bx_channels', 'bx_channels', '_bx_channels_search_extended', 1, '', ''),
+('bx_channels_cmts', 'bx_channels_cmts', 'bx_channels', '_bx_channels_search_extended_cmts', 1, 'BxTemplSearchExtendedCmts', '');
+
+-- STUDIO PAGE & WIDGET
+INSERT INTO `sys_std_pages`(`index`, `name`, `header`, `caption`, `icon`) VALUES
+(3, 'bx_channels', '_bx_channels', '_bx_channels', 'bx_channels@modules/boonex/channels/|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_channels', '{url_studio}module.php?name=bx_channels', '', 'bx_channels@modules/boonex/channels/|std-icon.svg', '_bx_channels', '', '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));
+

+ 44 - 0
modules/boonex/channels/install/sql/uninstall.sql

@@ -0,0 +1,44 @@
+
+-- TABLES
+
+DROP TABLE IF EXISTS `bx_cnl_data`, `bx_cnl_pics`, `bx_cnl_pics_resized`, `bx_cnl_cmts`, `bx_cnl_views_track`, `bx_cnl_meta_keywords`, `bx_cnl_meta_mentions`, `bx_cnl_fans`, `bx_cnl_admins`, `bx_cnl_votes`, `bx_cnl_votes_track`, `bx_cnl_reports`, `bx_cnl_reports_track`, `bx_cnl_favorites_track`, `bx_cnl_scores`, `bx_cnl_scores_track`;
+
+-- PROFILES
+
+DELETE FROM sys_profiles WHERE `type` = 'bx_channels';
+
+-- STORAGES & TRANSCODERS
+
+DELETE FROM `sys_objects_storage` WHERE `object` IN('bx_channels_pics', 'bx_channels_pics_resized');
+DELETE FROM `sys_storage_tokens` WHERE `object` IN('bx_channels_pics', 'bx_channels_pics_resized');
+
+DELETE FROM `sys_objects_transcoder` WHERE `object` IN('bx_channels_icon', 'bx_channels_thumb', 'bx_channels_avatar', 'bx_channels_picture', 'bx_channels_cover', 'bx_channels_cover_thumb', 'bx_channels_gallery');
+DELETE FROM `sys_transcoder_filters` WHERE `transcoder_object` IN('bx_channels_icon', 'bx_channels_thumb', 'bx_channels_avatar', 'bx_channels_picture', 'bx_channels_cover', 'bx_channels_cover_thumb', 'bx_channels_gallery');
+DELETE FROM `sys_transcoder_images_files` WHERE `transcoder_object` IN('bx_channels_icon', 'bx_channels_thumb', 'bx_channels_avatar', 'bx_channels_picture', 'bx_channels_cover', 'bx_channels_cover_thumb', 'bx_channels_gallery');
+
+-- FORMS
+
+DELETE FROM `sys_objects_form` WHERE `module` = 'bx_channels';
+DELETE FROM `sys_form_displays` WHERE `module` = 'bx_channels';
+DELETE FROM `sys_form_inputs` WHERE `module` = 'bx_channels';
+DELETE FROM `sys_form_display_inputs` WHERE `display_name` IN('bx_channel_add', 'bx_channel_delete', 'bx_channel_edit', 'bx_channel_edit_cover', 'bx_channel_view', 'bx_channel_view_full', 'bx_channel_invite');
+
+-- PRE-VALUES
+
+DELETE FROM `sys_form_pre_lists` WHERE `module` = 'bx_channels';
+
+DELETE FROM `sys_form_pre_values` WHERE `Key` IN('bx_channels_cats');
+
+-- CONTENT INFO
+DELETE FROM `sys_objects_content_info` WHERE `name` IN ('bx_channels', 'bx_channels_cmts');
+
+DELETE FROM `sys_content_info_grids` WHERE `object` IN ('bx_channels');
+
+-- SEARCH EXTENDED
+DELETE FROM `sys_objects_search_extended` WHERE `module` = 'bx_channels';
+
+-- STUDIO PAGE & WIDGET
+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_channels';
+

+ 62 - 0
modules/boonex/channels/js/manage_tools.js

@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+function BxCnlManageTools(oOptions) {
+	this._iSearchTimeoutId = false;
+	this._sActionsUrl = oOptions.sActionUrl;
+	this._sObjNameGrid = oOptions.sObjNameGrid;
+	this._sObjName = oOptions.sObjName == undefined ? 'oBxCnlManageTools' : oOptions.sObjName;
+
+    this._sAnimationEffect = oOptions.sAnimationEffect == undefined ? 'fade' : oOptions.sAnimationEffect;
+    this._iAnimationSpeed = oOptions.iAnimationSpeed == undefined ? 'slow' : oOptions.iAnimationSpeed;
+    this._sParamsDivider = oOptions.sParamsDivider == undefined ? '#-#' : oOptions.sParamsDivider;
+
+    this._aHtmlIds = oOptions.aHtmlIds == undefined ? {} : oOptions.aHtmlIds;
+    this._oRequestParams = oOptions.oRequestParams == undefined ? {} : oOptions.oRequestParams;
+}
+
+BxCnlManageTools.prototype.onChangeFilter = function (oFilter) {
+	var $this = this;
+	var oFilter1 = $('#bx-grid-filter1-' + this._sObjNameGrid);
+	var sValueFilter1 = oFilter1.length > 0 ? oFilter1.val() : '';
+
+	var oSearch = $('#bx-grid-search-' + this._sObjNameGrid);
+	var sValueSearch = oSearch.length > 0 ? oSearch.val() : '';
+	if(sValueSearch == _t('_sys_grid_search'))
+		sValueSearch = '';
+
+	clearTimeout($this._iSearchTimeoutId);
+    $this._iSearchTimeoutId = setTimeout(function () {
+        glGrids[$this._sObjNameGrid].setFilter(sValueFilter1 + $this._sParamsDivider + sValueSearch, true);
+    }, 500);
+};
+
+BxCnlManageTools.prototype.onClickSettings = function (sMenuObject, oButton) {
+	if($(oButton).hasClass('bx-btn-disabled'))
+		return false;
+
+	bx_menu_popup(sMenuObject, oButton, {}, {
+		content_id: $(oButton).attr('bx_grid_action_data')
+	});
+};
+
+BxCnlManageTools.prototype.onClickDelete = function (iContentId) {
+	$('.bx-popup-applied:visible').dolPopupHide();
+
+	glGrids[this._sObjNameGrid].actionWithId(iContentId, 'delete', {}, '', false, 1);
+};
+
+BxCnlManageTools.prototype.onClickDeleteWithContent = function (iContentId) {
+	$('.bx-popup-applied:visible').dolPopupHide();
+
+	glGrids[this._sObjNameGrid].actionWithId(iContentId, 'delete_with_content', {}, '', false, 1);
+};
+
+/** @} */

+ 18 - 0
modules/boonex/channels/request.php

@@ -0,0 +1,18 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defdroup    Channels Channels
+ * @indroup     UnaModules
+ *
+ * @{
+ */
+
+require_once(BX_DIRECTORY_PATH_INC . "design.inc.php");
+
+check_logged();
+
+BxBaseModProfileRequest::processAsAction($GLOBALS['aModule'], $GLOBALS['aRequest']);
+
+/** @} */

+ 1 - 0
modules/boonex/channels/template/account_link.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/account_link.html />

+ 1 - 0
modules/boonex/channels/template/cover.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/cover.html />

+ 1 - 0
modules/boonex/channels/template/css/forms.css

@@ -0,0 +1 @@
+@import url(../../../../base/profile/template/css/forms.css);

+ 1 - 0
modules/boonex/channels/template/css/main.css

@@ -0,0 +1 @@
+@import url(../../../../base/groups/template/css/main.css);

+ 1 - 0
modules/boonex/channels/template/css/manage_tools.css

@@ -0,0 +1 @@
+@import url(../../../../base/general/template/css/manage_tools.css);

+ 1 - 0
modules/boonex/channels/template/entry-childs.html

@@ -0,0 +1 @@
+__content__

+ 1 - 0
modules/boonex/channels/template/entry-parent.html

@@ -0,0 +1 @@
+__content__

+ 3 - 0
modules/boonex/channels/template/entry-share.html

@@ -0,0 +1,3 @@
+
+<bx_include_base:../modules/base/groups/template/entry-share.html />
+

+ 1 - 0
modules/boonex/channels/template/entry-text.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/profile/template/entry-text.html />

+ 1 - 0
modules/boonex/channels/template/form_ghost_template.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/profile/template/form_ghost_template.html />

+ 1 - 0
modules/boonex/channels/template/image_popup.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/image_popup.html />

+ 25 - 0
modules/boonex/channels/template/images/icons/std-icon.svg

@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<svg width="600" height="600" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+ <!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
+ <title>Group 2 Copy 19</title>
+ <desc>Created with Sketch.</desc>
+ <defs>
+  <linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
+   <stop stop-color="#FFFFFF" stop-opacity="0.2" offset="0%"/>
+   <stop stop-color="#000000" stop-opacity="0.13887" offset="100%"/>
+  </linearGradient>
+  <path d="m296.71269,208.4098c-12.62806,-4.39644 -26.28507,-4.67706 -38.91314,-9.0735c-3.83519,-1.30957 -11.41202,-2.89977 -13.00222,-7.29621c-1.49666,-4.3029 -1.49666,-9.35412 -1.77728,-13.8441c-0.18709,-3.55457 -0.28063,-7.10913 -0.28063,-10.6637c0,-2.33853 5.98664,-7.29621 7.29622,-9.44766c5.05122,-8.41871 5.51893,-19.73719 6.45434,-29.27839c8.13808,2.24498 9.16704,-12.81515 10.57015,-17.39867c1.02896,-3.1804 7.29622,-25.06904 -2.43207,-22.07572c2.33853,-4.11581 3.27394,-9.16704 3.92873,-13.75056c1.87083,-11.97327 2.61916,-25.06904 -1.02895,-36.76169c-7.57684,-24.32071 -30.8686,-37.97773 -55.46993,-38.72606c-24.97551,-0.84187 -50.04455,11.1314 -59.39867,35.35858c-4.48998,11.78619 -4.11581,24.60133 -2.61915,36.94877c0.65479,5.61247 1.5902,11.87973 4.39644,16.93096c-9.0735,-2.7127 -4.20936,16.55679 -3.18041,19.92427c1.49666,4.77061 2.80624,21.88865 11.31849,19.55012c0.74833,7.57683 1.5902,15.34075 3.64811,22.73051c1.40311,4.95768 4.30289,9.16704 7.67038,13.00223c1.68374,1.87082 2.52561,2.0579 2.43207,4.48997c-0.09354,7.29622 0.09354,15.15368 -1.77729,22.26281c-1.87082,7.10913 -17.4922,10.10245 -23.75946,11.41203c-16.83742,3.46102 -32.36526,5.05122 -46.39644,15.52784c-16.36971,12.06681 -24.88196,30.86859 -24.88196,51.16703l233.75947,0l26.28508,0c0,-27.59465 -16.65034,-51.91536 -42.84188,-60.98886l0,0z" id="path-3"/>
+  <path d="m104.11136,196.90423c-3.1804,1.5902 -7.01559,3.55457 0.74833,-0.37416c2.80623,-1.40312 2.24499,-1.1225 0.74833,-0.37417c6.3608,-2.99332 13.18931,-3.74165 20.01781,-4.39643c2.61916,-0.28063 3.83519,-2.05791 1.87083,-4.58352c-3.74165,-4.7706 -16.65034,-5.70602 -22.07572,-7.85746c-3.36749,-1.30958 -4.3029,-2.52562 -4.58352,-6.26727c-0.09354,-1.68374 -1.02896,-9.16703 0.28062,-10.38307c0.93541,-0.93541 6.82851,-0.56125 8.13808,-0.74833c5.33185,-0.65479 10.75724,-1.77728 15.80847,-3.74165c2.15145,-0.84187 4.20935,-1.87082 6.08018,-3.1804c2.24499,-1.68374 -1.68375,-5.79955 -2.7127,-8.04454c-3.1804,-7.01559 -4.58352,-14.68597 -5.05122,-22.35635c-0.93542,-15.06013 1.40311,-30.21381 -1.40312,-45.1804c-4.20936,-22.91759 -21.88864,-34.42316 -44.43207,-34.42316c-13.93764,0 -27.6882,4.7706 -35.45212,16.93096c-8.60579,13.37639 -8.13808,30.02672 -7.67038,45.27394c0.28063,8.69933 0.65479,17.4922 -0.56124,26.19154c-0.56125,3.74164 -1.40312,7.38975 -2.7127,10.94432c-1.02895,2.71269 -6.26726,9.44766 -4.20935,10.85077c7.76392,5.51894 20.85968,7.38976 30.2138,6.64143c0.28063,4.58352 1.1225,10.47662 -0.56124,14.77951c-2.61916,6.73497 -22.16927,8.51225 -28.06236,10.47661c-16.36971,5.42539 -28.53007,18.70825 -28.53007,37.41649l51.26058,0l23.10468,0c1.21603,0 5.89309,-8.69934 7.20267,-10.10245c6.3608,-7.01559 14.12472,-13.09577 22.54343,-17.49221l0,0z" id="path-5"/>
+  <path d="m390.34744,186.98886c-7.57684,-2.43207 -22.16927,-3.1804 -27.59466,-9.72828c-2.71269,-3.27394 -1.21603,-11.59911 -0.93541,-15.52784c4.11581,0.37416 8.60579,-0.28062 12.81515,-0.84187c3.83519,-0.56125 7.57683,-1.30958 11.22494,-2.61915c1.68374,-0.65479 3.36748,-1.30958 4.95768,-2.24499c3.64811,-2.15145 1.96437,-2.52562 0.09355,-5.70602c-10.196,-17.11804 -5.61248,-38.8196 -6.08018,-57.62138c-0.37417,-15.62138 -4.48998,-32.73942 -18.70824,-41.53229c-12.81515,-7.951 -31.80401,-8.23163 -45.55457,-2.61916c-39.66147,15.90201 -16.27617,68.47216 -29.83964,98.59243c-2.33853,5.05123 -5.70602,6.82851 0.18708,9.82183c3.27394,1.68374 6.82851,2.80623 10.38307,3.6481c5.42539,1.30958 11.03787,2.05791 16.65034,2.24499c0.93541,0 0.28062,11.78619 0,13.00223c-1.02895,4.58352 -11.03786,5.8931 -14.77951,6.92205c-3.83519,1.02895 -10.19599,1.30958 -12.06682,5.33185c-2.80623,5.98664 9.26058,4.48998 12.2539,5.05122c9.63474,1.77729 18.14699,7.10914 25.63029,13.18931c5.61247,4.58352 13.18931,10.75724 15.24722,18.24054l75.02004,0c-0.18708,-18.80178 -12.44098,-32.17818 -28.90423,-37.60357l0,0z" id="path-7"/>
+ </defs>
+ <g class="layer">
+  <title>Layer 1</title>
+  <path d="m552.26896,552.26896c47.73104,-47.73115 47.73104,-120.81063 47.73104,-252.26896c0,-131.45833 0,-204.53781 -47.73104,-252.26896c-47.73115,-47.73104 -120.81063,-47.73104 -252.26896,-47.73104c-131.45833,0 -204.53781,0 -252.26896,47.73104c-47.73104,47.73115 -47.73104,120.81063 -47.73104,252.26896c0,131.45833 0,204.53781 47.73104,252.26896c47.73115,47.73104 120.81063,47.73104 252.26896,47.73104c131.45833,0 204.53781,0 252.26896,-47.73104l0,0z" id="path" fill="#2BAF92"/>
+  <g id="svg_9"/>
+  <g id="svg_3"/>
+  <path d="m552.26896,552.26896c47.73104,-47.73115 47.73104,-120.81063 47.73104,-252.26896c0,-131.45833 0,-204.53781 -47.73104,-252.26896c-47.73115,-47.73104 -120.81063,-47.73104 -252.26896,-47.73104c-131.45833,0 -204.53781,0 -252.26896,47.73104c-47.73104,47.73115 -47.73104,120.81063 -47.73104,252.26896c0,131.45833 0,204.53781 47.73104,252.26896c47.73115,47.73104 120.81063,47.73104 252.26896,47.73104c131.45833,0 204.53781,0 252.26896,-47.73104l0,0z" id="path-copy" fill="url(#linearGradient-1)"/>
+  <g transform="matrix(0.3578164377493016,0,0,0.33433973237020886,125.5042074013726,426.10454648740676) " id="svg_5">
+   <path id="svg_6" fill="#fff" d="m552.103495,-281.945904l41.83269,-181.309196l-166.023489,0l-41.83269,181.309196l166.023489,0zm501.992283,-356.95248l-36.603604,158.645547q-4.57545,16.997737 -20.262709,16.997737l-213.738902,0l-41.83269,181.309196l203.280729,0q9.804537,0 16.340895,8.498869q6.536358,9.915347 3.921815,19.830693l-36.603604,158.645547q-3.268179,16.997737 -20.262709,16.997737l-213.738902,0l-52.944499,232.302408q-4.57545,16.997737 -20.262709,16.997737l-146.414416,0q-10.458173,0 -16.99453,-8.498869q-5.882722,-8.498869 -3.921815,-19.830693l50.983591,-220.970583l-166.023489,0l-52.944499,232.302408q-4.57545,16.997737 -20.262709,16.997737l-147.068052,0q-9.804537,0 -16.340895,-8.498869q-5.882722,-8.498869 -3.921815,-19.830693l50.983591,-220.970583l-203.280729,0q-9.804537,0 -16.340895,-8.498869q-5.882722,-8.498869 -3.921815,-19.830693l36.603604,-158.645547q4.57545,-16.997737 20.262709,-16.997737l213.738902,0l41.83269,-181.309196l-203.280729,0q-9.804537,0 -16.340895,-8.498869q-6.536358,-9.915347 -3.921815,-19.830693l36.603604,-158.645547q3.268179,-16.997737 20.262709,-16.997737l213.738902,0l52.944499,-232.302408q4.57545,-16.997737 20.916345,-16.997737l146.414416,0q9.804537,0 16.340895,8.498869q5.882722,8.498869 3.921815,19.830693l-50.983591,220.970583l166.023489,0l52.944499,-232.302408q4.57545,-16.997737 20.916345,-16.997737l146.414416,0q9.804537,0 16.340895,8.498869q5.882722,8.498869 3.921815,19.830693l-50.983591,220.970583l203.280729,0q9.804537,0 16.340895,8.498869q5.882722,8.498869 3.921815,19.830693z"/>
+  </g>
+ </g>
+</svg>

BIN
modules/boonex/channels/template/images/no-pciture-big.png


BIN
modules/boonex/channels/template/images/no-picture-icon.png


BIN
modules/boonex/channels/template/images/no-picture-preview.png


BIN
modules/boonex/channels/template/images/no-picture-thumb.png


+ 1 - 0
modules/boonex/channels/template/name_link.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/name_link.html />

+ 1 - 0
modules/boonex/channels/template/picture_preview.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/picture_preview.html />

+ 1 - 0
modules/boonex/channels/template/search_extended_results.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/profile/template/search_extended_results.html />

+ 1 - 0
modules/boonex/channels/template/set_acl_popup.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/set_acl_popup.html />

+ 1 - 0
modules/boonex/channels/template/unit.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/unit.html />

+ 1 - 0
modules/boonex/channels/template/unit_live_search.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/unit_live_search.html />

+ 1 - 0
modules/boonex/channels/template/unit_meta_item.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/profile/template/unit_meta_item.html />

+ 1 - 0
modules/boonex/channels/template/unit_with_cover_showcase.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/unit_with_cover_showcase.html />

+ 1 - 0
modules/boonex/channels/template/unit_wo_info.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/groups/template/unit_wo_info.html />

+ 1 - 0
modules/boonex/channels/template/uploader_form_crop_cover.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/profile/template/uploader_form_crop_cover.html />

+ 2 - 2
modules/boonex/chat_plus/install/sql/enable.sql

@@ -19,11 +19,11 @@ INSERT INTO `sys_options` (`name`, `value`, `category_id`, `caption`, `type`, `c
 
 SET @iSiteMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_site' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_site', 'bx_chat_plus', 'chat-plus', '_bx_chat_plus_menu_item_title_system_entries_home', '_bx_chat_plus_menu_item_title_entries_home', 'page.php?i=chat-plus', '', '', 'commenting col-blue3', '', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
+('sys_site', 'bx_chat_plus', 'chat-plus', '_bx_chat_plus_menu_item_title_system_entries_home', '_bx_chat_plus_menu_item_title_entries_home', 'page.php?i=chat-plus', '', '', 'comment-alt col-blue3', '', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
 
 SET @iHomepageMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_homepage' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_homepage', 'bx_chat_plus', 'chat-plus', '_bx_chat_plus_menu_item_title_system_entries_home', '_bx_chat_plus_menu_item_title_entries_home', 'page.php?i=chat-plus', '', '', 'commenting col-blue3', '', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
+('sys_homepage', 'bx_chat_plus', 'chat-plus', '_bx_chat_plus_menu_item_title_system_entries_home', '_bx_chat_plus_menu_item_title_entries_home', 'page.php?i=chat-plus', '', '', 'comment-alt col-blue3', '', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
 
 -- Page
 

+ 1 - 1
modules/boonex/convos/install/sql/enable.sql

@@ -68,7 +68,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_convos_view', 'bx_convos', '_bx_cnv_menu_set_title_view_entry', 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_convos_view', 'bx_convos', 'edit-convo', '_bx_cnv_menu_item_title_system_edit_entry', '_bx_cnv_menu_item_title_edit_entry', 'page.php?i=edit-convo&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 1),
+('bx_convos_view', 'bx_convos', 'edit-convo', '_bx_cnv_menu_item_title_system_edit_entry', '_bx_cnv_menu_item_title_edit_entry', 'page.php?i=edit-convo&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 1),
 ('bx_convos_view', 'bx_convos', 'delete-convo', '_bx_cnv_menu_item_title_system_delete_entry', '_bx_cnv_menu_item_title_delete_entry', 'javascript:void(0);', 'bx_cnv_delete(this, \'{content_id}\')', '', 'remove', '', 2147483647, 1, 0, 2),
 ('bx_convos_view', 'bx_convos', 'mark-unread-convo', '_bx_cnv_menu_item_title_system_mark_unread_entry', '_bx_cnv_menu_item_title_mark_unread_entry', 'javascript:void(0);', 'bx_cnv_mark_unread(this, \'{content_id}\')', '', 'check', '', 2147483647, 1, 0, 3);
 

+ 1 - 1
modules/boonex/developer/classes/BxDevPolyglotManage.php

@@ -14,7 +14,7 @@ class BxDevPolyglotManage extends BxTemplStudioGrid
     private $sAllUri = 'all';
     private $aActions = array(
         'restore' => 'eraser',
-        'recompile' => 'refresh'
+        'recompile' => 'sync'
     );
 
     protected $oModule;

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

@@ -78,29 +78,29 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 ('bx_developer_forms', 'independent', 'add', '_bx_dev_frm_btn_forms_gl_create', '', 0, 1),
 ('bx_developer_forms', 'single', 'export', '', 'download', 0, 1),
-('bx_developer_forms', 'single', 'edit', '', 'pencil', 0, 2),
+('bx_developer_forms', 'single', 'edit', '', 'pencil-alt', 0, 2),
 
 ('bx_developer_forms_displays', 'independent', 'add', '_bx_dev_frm_btn_displays_gl_create', '', 0, 1),
-('bx_developer_forms_displays', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_developer_forms_displays', 'single', 'edit', '', 'pencil-alt', 0, 1),
 
-('bx_developer_forms_fields', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_developer_forms_fields', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('bx_developer_forms_fields', 'single', 'delete', '', 'remove', 1, 2),
 ('bx_developer_forms_fields', 'single', 'show_to', '_bx_dev_frm_btn_fields_visible', '', 0, 3),
 ('bx_developer_forms_fields', 'independent', 'add', '_bx_dev_frm_btn_fields_create', '', 0, 1),
 
 ('bx_developer_forms_pre_lists', 'independent', 'add', '_bx_dev_frm_btn_pre_lists_create', '', 0, 1),
 ('bx_developer_forms_pre_lists', 'single', 'export', '', 'download', 0, 1),
-('bx_developer_forms_pre_lists', 'single', 'edit', '', 'pencil', 0, 2),
+('bx_developer_forms_pre_lists', 'single', 'edit', '', 'pencil-alt', 0, 2),
 ('bx_developer_forms_pre_lists', 'single', 'delete', '', 'remove', 1, 3),
 
 ('bx_developer_forms_pre_values', 'independent', 'add', '_bx_dev_frm_btn_pre_values_create', '', 0, 1),
-('bx_developer_forms_pre_values', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_developer_forms_pre_values', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('bx_developer_forms_pre_values', 'single', 'delete', '', 'remove', 1, 2),
 
 ('bx_developer_search_forms', 'independent', 'add', '_bx_dev_frm_btn_search_forms_create', '', 0, 1),
-('bx_developer_search_forms', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_developer_search_forms', 'single', 'edit', '', 'pencil-alt', 0, 1),
 
-('bx_developer_search_forms_fields', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_developer_search_forms_fields', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('bx_developer_search_forms_fields', 'independent', 'reset', '_bx_dev_frm_btn_search_forms_fields_reset', '', 0, 1);
 
 
@@ -398,14 +398,14 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `confirm`, `order`) VALUES
 ('bx_developer_nav_menus', 'independent', 'add', '_bx_dev_nav_btn_menus_gl_create', '', 0, 1),
 ('bx_developer_nav_menus', 'single', 'export', '', 'download', 0, 1),
-('bx_developer_nav_menus', 'single', 'edit', '', 'pencil', 0, 2),
+('bx_developer_nav_menus', 'single', 'edit', '', 'pencil-alt', 0, 2),
 ('bx_developer_nav_menus', 'single', 'delete', '', 'remove', 1, 3),
 ('bx_developer_nav_sets', 'independent', 'add', '_bx_dev_nav_btn_sets_gl_create', '', 0, 1),
-('bx_developer_nav_sets', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_developer_nav_sets', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('bx_developer_nav_sets', 'single', 'delete', '', 'remove', 1, 2),
 ('bx_developer_nav_items', 'independent', 'import', '_bx_dev_nav_btn_items_gl_import', '', 0, 1),
 ('bx_developer_nav_items', 'independent', 'add', '_bx_dev_nav_btn_items_gl_create', '', 0, 2),
-('bx_developer_nav_items', 'single', 'edit', '', 'pencil', 0, 1),
+('bx_developer_nav_items', 'single', 'edit', '', 'pencil-alt', 0, 1),
 ('bx_developer_nav_items', 'single', 'delete', '', 'remove', 1, 2),
 ('bx_developer_nav_items', 'single', 'show_to', '_bx_dev_nav_btn_items_gl_visible', '', 0, 3);
 

+ 1 - 1
modules/boonex/dolphin_connect/install/sql/enable.sql

@@ -7,7 +7,7 @@ INSERT INTO `sys_email_templates` (`Module`, `NameSystem`, `Name`, `Subject`, `B
 -- Auth objects
 
 INSERT INTO `sys_objects_auths` (`Name`, `Title`, `Link`, `Icon`) VALUES
-('bx_dolcon', '_bx_dolcon_auth_title', 'modules/?r=dolcon/start', 'sign-in');
+('bx_dolcon', '_bx_dolcon_auth_title', 'modules/?r=dolcon/start', 'sign-in-alt');
 
 -- Alerts
 

+ 1 - 1
modules/boonex/dolphin_migration/classes/BxDolMStudioPage.php

@@ -27,7 +27,7 @@ class BxDolMStudioPage extends BxTemplStudioModule
 		
 		$this->aMenuItems = array(
             array('name' => 'settings', 'icon' => 'cogs', 'title' => '_bx_dolphin_migration_cpt_settings'),
-            array('name' => 'config', 'icon' => 'exchange', 'title' => '_bx_dolphin_migration_cpt_transfer_data'),
+            array('name' => 'config', 'icon' => 'exchange-alt', 'title' => '_bx_dolphin_migration_cpt_transfer_data'),
         );	
 		
 		$this -> _oModule -> _oTemplate -> addStudioJs(array('transfer.js', 'BxDolGrid.js'));

+ 4 - 4
modules/boonex/events/install/sql/enable.sql

@@ -230,8 +230,8 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) 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_events_view_actions_more', 'bx_events', 'profile-fan-remove', '_bx_events_menu_item_title_system_leave_group', '{title_remove_fan}', 'javascript:void(0)', 'bx_conn_action(this, \'bx_events_fans\', \'remove\', \'{profile_id}\')', '', 'user-times', '', 2147483647, 1, 0, 10),
 ('bx_events_view_actions_more', 'bx_events', 'profile-subscribe-remove', '_bx_events_menu_item_title_system_unsubscribe', '_bx_events_menu_item_title_unsubscribe', 'javascript:void(0)', 'bx_conn_action(this, \'sys_profiles_subscriptions\', \'remove\', \'{profile_id}\')', '', 'check', '', 2147483647, 1, 0, 20),
-('bx_events_view_actions_more', 'bx_events', 'edit-event-cover', '_bx_events_menu_item_title_system_edit_cover', '_bx_events_menu_item_title_edit_cover', 'page.php?i=edit-event-cover&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 30),
-('bx_events_view_actions_more', 'bx_events', 'edit-event-profile', '_bx_events_menu_item_title_system_edit_profile', '_bx_events_menu_item_title_edit_profile', 'page.php?i=edit-event-profile&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 40),
+('bx_events_view_actions_more', 'bx_events', 'edit-event-cover', '_bx_events_menu_item_title_system_edit_cover', '_bx_events_menu_item_title_edit_cover', 'page.php?i=edit-event-cover&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 30),
+('bx_events_view_actions_more', 'bx_events', 'edit-event-profile', '_bx_events_menu_item_title_system_edit_profile', '_bx_events_menu_item_title_edit_profile', 'page.php?i=edit-event-profile&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 40),
 ('bx_events_view_actions_more', 'bx_events', 'invite-to-event', '_bx_events_menu_item_title_system_invite', '_bx_events_menu_item_title_invite', 'page.php?i=invite-to-event&id={content_id}', '', '', 'user-plus', '', 2147483647, 1, 0, 42),
 ('bx_events_view_actions_more', 'bx_events', 'delete-event-profile', '_bx_events_menu_item_title_system_delete_profile', '_bx_events_menu_item_title_delete_profile', 'page.php?i=delete-event-profile&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 50);
 
@@ -310,8 +310,8 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_events_menu_manage_tools', 'bx_events', '_bx_events_menu_set_title_manage_tools', 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_events_menu_manage_tools', 'bx_events', 'delete', '_bx_events_menu_item_title_system_delete', '_bx_events_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'trash-o', '', 2147483647, 1, 0, 1),
-('bx_events_menu_manage_tools', 'bx_events', 'delete-with-content', '_bx_events_menu_item_title_system_delete_with_content', '_bx_events_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'trash-o', '', 2147483647, 1, 0, 2);
+('bx_events_menu_manage_tools', 'bx_events', 'delete', '_bx_events_menu_item_title_system_delete', '_bx_events_menu_item_title_delete', 'javascript:void(0)', 'javascript:{js_object}.onClickDelete({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 1),
+('bx_events_menu_manage_tools', 'bx_events', 'delete-with-content', '_bx_events_menu_item_title_system_delete_with_content', '_bx_events_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 2147483647, 1, 0, 2);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);

+ 1 - 1
modules/boonex/files/classes/BxFilesModule.php

@@ -192,7 +192,7 @@ class BxFilesModule extends BxBaseModTextModule
         $aFile = $this->getContentFile($aContentInfo);
         if (!$aFile['is_image']) {
             $oStorage = BxDolStorage::getObjectInstance($this->_oConfig->CNF['OBJECT_STORAGE']);
-            $sIcon = $oStorage ? $oStorage->getFontIconNameByFileName($aFile['file_name']) : 'file-o';
+            $sIcon = $oStorage ? $oStorage->getFontIconNameByFileName($aFile['file_name']) : 'far file';
 
             $aResult['raw'] = $this->_oTemplate->parseHtmlByName('timeline_post.html', array(
                 'title' => $aResult['title'],

+ 1 - 1
modules/boonex/files/classes/BxFilesTemplate.php

@@ -49,7 +49,7 @@ class BxFilesTemplate extends BxBaseModTextTemplate
         
         $oStorage = BxDolStorage::getObjectInstance($CNF['OBJECT_STORAGE']);
 
-        $aVars['icon'] = $oStorage ? $oStorage->getFontIconNameByFileName($aFile['file_name']) : 'file-o';
+        $aVars['icon'] = $oStorage ? $oStorage->getFontIconNameByFileName($aFile['file_name']) : 'far file';
         if ($sTemplateName == 'unit_gallery.html') 
             $aVars['bx_if:no_thumb']['content']['icon'] = $aVars['icon'];
 

+ 11 - 11
modules/boonex/files/install/sql/enable.sql

@@ -181,19 +181,19 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `t
 
 SET @iSiteMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_site' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_site', 'bx_files', 'files-home', '_bx_files_menu_item_title_system_entries_home', '_bx_files_menu_item_title_entries_home', 'page.php?i=files-home', '', '', 'file-o col-red3', 'bx_files_submenu', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
+('sys_site', 'bx_files', 'files-home', '_bx_files_menu_item_title_system_entries_home', '_bx_files_menu_item_title_entries_home', 'page.php?i=files-home', '', '', 'far file col-red3', 'bx_files_submenu', 2147483647, 1, 1, IFNULL(@iSiteMenuOrder, 0) + 1);
 
 -- MENU: add to homepage menu
 
 SET @iHomepageMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_homepage' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_homepage', 'bx_files', 'files-home', '_bx_files_menu_item_title_system_entries_home', '_bx_files_menu_item_title_entries_home', 'page.php?i=files-home', '', '', 'file-o col-red3', 'bx_files_submenu', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
+('sys_homepage', 'bx_files', 'files-home', '_bx_files_menu_item_title_system_entries_home', '_bx_files_menu_item_title_entries_home', 'page.php?i=files-home', '', '', 'far file col-red3', 'bx_files_submenu', 2147483647, 1, 1, IFNULL(@iHomepageMenuOrder, 0) + 1);
 
 -- MENU: add to "add content" menu
 
 SET @iAddMenuOrder = (SELECT `order` FROM `sys_menu_items` WHERE `set_name` = 'sys_add_content_links' AND `active` = 1 ORDER BY `order` DESC LIMIT 1);
 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_add_content_links', 'bx_files', 'create-file', '_bx_files_menu_item_title_system_create_entry', '_bx_files_menu_item_title_create_entry', 'page.php?i=create-file', '', '', 'file-o col-red3', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
+('sys_add_content_links', 'bx_files', 'create-file', '_bx_files_menu_item_title_system_create_entry', '_bx_files_menu_item_title_create_entry', 'page.php?i=create-file', '', '', 'far file col-red3', '', 2147483647, 1, 1, IFNULL(@iAddMenuOrder, 0) + 1);
 
 
 -- MENU: actions menu for view entry 
@@ -206,7 +206,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) 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_files_view', 'bx_files', 'download-file', '_bx_files_menu_item_title_system_download_file', '_bx_files_menu_item_title_download_file', 'modules/?r=files/download/{file_download_token}/{content_id}.{file_ext}', '', '_blank', 'download', '', 2147483647, 1, 0, 1),
-('bx_files_view', 'bx_files', 'edit-file', '_bx_files_menu_item_title_system_edit_entry', '_bx_files_menu_item_title_edit_entry', 'page.php?i=edit-file&id={content_id}', '', '', 'pencil', '', 2147483647, 1, 0, 2),
+('bx_files_view', 'bx_files', 'edit-file', '_bx_files_menu_item_title_system_edit_entry', '_bx_files_menu_item_title_edit_entry', 'page.php?i=edit-file&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 2),
 ('bx_files_view', 'bx_files', 'delete-file', '_bx_files_menu_item_title_system_delete_entry', '_bx_files_menu_item_title_delete_entry', 'page.php?i=delete-file&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 3);
 
 
@@ -266,7 +266,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 -- 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);
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
-('sys_profile_stats', 'bx_files', 'profile-stats-manage-files', '_bx_files_menu_item_title_system_manage_my_files', '_bx_files_menu_item_title_manage_my_files', 'page.php?i=files-manage', '', '_self', 'file-o col-red3', 'a:2:{s:6:"module";s:8:"bx_files";s:6:"method";s:41:"get_menu_addon_manage_tools_profile_stats";}', '', 2147483646, 1, 0, @iNotifMenuOrder + 1);
+('sys_profile_stats', 'bx_files', 'profile-stats-manage-files', '_bx_files_menu_item_title_system_manage_my_files', '_bx_files_menu_item_title_manage_my_files', 'page.php?i=files-manage', '', '_self', 'far file col-red3', 'a:2:{s:6:"module";s:8:"bx_files";s:6:"method";s:41:"get_menu_addon_manage_tools_profile_stats";}', '', 2147483646, 1, 0, @iNotifMenuOrder + 1);
 
 -- 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 
@@ -276,7 +276,7 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 ('bx_files_menu_manage_tools', 'bx_files', '_bx_files_menu_set_title_manage_tools', 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_files_menu_manage_tools', 'bx_files', 'delete-with-content', '_bx_files_menu_item_title_system_delete_with_content', '_bx_files_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'trash-o', '', 128, 1, 0, 0);
+--('bx_files_menu_manage_tools', 'bx_files', 'delete-with-content', '_bx_files_menu_item_title_system_delete_with_content', '_bx_files_menu_item_title_delete_with_content', 'javascript:void(0)', 'javascript:{js_object}.onClickDeleteWithContent({content_id});', '_self', 'far trash-alt', '', 128, 1, 0, 0);
 
 -- MENU: dashboard manage tools
 SET @iManageMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name`='sys_account_dashboard_manage_tools' LIMIT 1);
@@ -286,8 +286,8 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 -- MENU: add menu item to profile & group based modules (trigger* menu sets are processed separately upon modules enable/disable)
 
 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 
-('trigger_profile_view_submenu', 'bx_files', 'files-author', '_bx_files_menu_item_title_system_view_entries_author', '_bx_files_menu_item_title_view_entries_author', 'page.php?i=files-author&profile_id={profile_id}', '', '', 'file-o col-red3', '', 2147483647, 1, 0, 0),
-('trigger_group_view_submenu', 'bx_files', 'files-context', '_bx_files_menu_item_title_system_view_entries_in_context', '_bx_files_menu_item_title_view_entries_in_context', 'page.php?i=files-context&profile_id={profile_id}', '', '', 'file-o col-red3', '', 2147483647, 1, 0, 0);
+('trigger_profile_view_submenu', 'bx_files', 'files-author', '_bx_files_menu_item_title_system_view_entries_author', '_bx_files_menu_item_title_view_entries_author', 'page.php?i=files-author&profile_id={profile_id}', '', '', 'far file col-red3', '', 2147483647, 1, 0, 0),
+('trigger_group_view_submenu', 'bx_files', 'files-context', '_bx_files_menu_item_title_system_view_entries_in_context', '_bx_files_menu_item_title_view_entries_in_context', 'page.php?i=files-context&profile_id={profile_id}', '', '', 'far file col-red3', '', 2147483647, 1, 0, 0);
 
 -- PRIVACY 
 
@@ -369,7 +369,7 @@ INSERT INTO `sys_objects_category` (`object`, `search_object`, `form_object`, `l
 -- STATS
 SET @iMaxOrderStats = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_statistics`);
 INSERT INTO `sys_statistics` (`module`, `name`, `title`, `link`, `icon`, `query`, `order`) VALUES 
-('bx_files', 'bx_files', '_bx_files', 'page.php?i=files-home', 'file-o col-red3', 'SELECT COUNT(*) FROM `bx_files_main` WHERE 1 AND `status` = ''active'' AND `status_admin` = ''active''', @iMaxOrderStats + 1);
+('bx_files', 'bx_files', '_bx_files', 'page.php?i=files-home', 'far file col-red3', 'SELECT COUNT(*) FROM `bx_files_main` WHERE 1 AND `status` = ''active'' AND `status_admin` = ''active''', @iMaxOrderStats + 1);
 
 -- CHARTS
 SET @iMaxOrderCharts = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_objects_chart`);
@@ -399,11 +399,11 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 
 INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon_only`, `confirm`, `order`) VALUES
 ('bx_files_administration', 'bulk', 'delete', '_bx_files_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_files_administration', 'single', 'edit', '_bx_files_grid_action_title_adm_edit', 'pencil', 1, 0, 1),
+('bx_files_administration', 'single', 'edit', '_bx_files_grid_action_title_adm_edit', 'pencil-alt', 1, 0, 1),
 ('bx_files_administration', 'single', 'delete', '_bx_files_grid_action_title_adm_delete', 'remove', 1, 1, 2),
 ('bx_files_administration', 'single', 'settings', '_bx_files_grid_action_title_adm_more_actions', 'cog', 1, 0, 3),
 ('bx_files_common', 'bulk', 'delete', '_bx_files_grid_action_title_adm_delete', '', 0, 1, 1),
-('bx_files_common', 'single', 'edit', '_bx_files_grid_action_title_adm_edit', 'pencil', 1, 0, 1),
+('bx_files_common', 'single', 'edit', '_bx_files_grid_action_title_adm_edit', 'pencil-alt', 1, 0, 1),
 ('bx_files_common', 'single', 'delete', '_bx_files_grid_action_title_adm_delete', 'remove', 1, 1, 2),
 ('bx_files_common', 'single', 'settings', '_bx_files_grid_action_title_adm_more_actions', 'cog', 1, 0, 3);
 

+ 22 - 0
modules/boonex/fontawesome/classes/BxFontAwesomeAlerts.php

@@ -0,0 +1,22 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxFontAwesomeAlerts extends BxDolAlertsResponse
+{
+    public function response($o)
+    {        
+        if ('system' == $o->sUnit && 'save_setting' == $o->sAction && 'bx_fontawesome_option_light_icons' == $o->aExtras['option']) {            
+            bx_srv('bx_fontawesome', 'switch_light_font', array($o->aExtras['value']));
+        }
+    }    
+}
+
+/** @} */

+ 20 - 0
modules/boonex/fontawesome/classes/BxFontAwesomeConfig.php

@@ -0,0 +1,20 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxFontAwesomeConfig extends BxDolModuleConfig
+{
+    function __construct($aModule)
+    {
+        parent::__construct($aModule);
+    }
+}
+
+/** @} */

+ 26 - 0
modules/boonex/fontawesome/classes/BxFontAwesomeDb.php

@@ -0,0 +1,26 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxFontAwesomeDb extends BxDolModuleDb
+{
+    function __construct(&$oConfig)
+    {
+        parent::__construct($oConfig);
+    }
+
+    function switchLightFont($bEnable)
+    {
+        $this->query("UPDATE `sys_preloader` SET `active` = :active WHERE `module` = 'bx_fontawesome' AND `type` = 'css_system' AND `content` = 'fonts-light.css'", array('active' => $bEnable ? 1 : 0));
+        $this->query("UPDATE `sys_preloader` SET `active` = :active WHERE `module` = 'bx_fontawesome' AND `type` = 'css_system' AND `content` = 'fonts-all.css'", array('active' => !$bEnable ? 1 : 0));
+    }
+}
+
+/** @} */

+ 26 - 0
modules/boonex/fontawesome/classes/BxFontAwesomeModule.php

@@ -0,0 +1,26 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxFontAwesomeModule extends BxDolModule
+{
+    function __construct(&$aModule)
+    {
+        parent::__construct($aModule);
+    }
+
+    public function serviceSwitchLightFont($bEnable)
+    {
+        $this->_oDb->switchLightFont($bEnable);
+        BxDolCacheUtilities::getInstance()->clear('css');
+    }
+}
+
+/** @} */

+ 20 - 0
modules/boonex/fontawesome/classes/BxFontAwesomeTemplate.php

@@ -0,0 +1,20 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxFontAwesomeTemplate extends BxDolModuleTemplate
+{
+    function __construct(&$oConfig, &$oDb)
+    {
+        parent::__construct($oConfig, $oDb);
+    }
+}
+
+/** @} */

+ 68 - 0
modules/boonex/fontawesome/install/config.php

@@ -0,0 +1,68 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+$aConfig = array(
+    /**
+     * Main Section.
+     */
+    'type' => BX_DOL_MODULE_TYPE_MODULE,
+    'name' => 'bx_fontawesome',
+    'title' => 'Font Awesome Pro',
+    'note' => 'Font Awesome Pro integration.',
+    'version' => '9.0.0.DEV',
+    'vendor' => 'BoonEx',
+	'help_url' => 'http://feed.una.io/?section={module_name}',
+
+    'compatible_with' => array(
+        '9.0.x'
+    ),
+
+    /**
+     * 'home_dir' and 'home_uri' - should be unique. Don't use spaces in 'home_uri' and the other special chars.
+     */
+    'home_dir' => 'boonex/fontawesome/',
+    'home_uri' => 'fontawesome',
+
+    'db_prefix' => 'bx_fontawesome_',
+    'class_prefix' => 'BxFontAwesome',
+
+    /**
+     * Category for language keys.
+     */
+    'language_category' => 'FontAwesome',
+    
+    /**
+     * Installation/Uninstallation Section.
+     */
+    'install' => array(
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    ),
+    'uninstall' => array (
+        'execute_sql' => 1,
+        'update_languages' => 1,
+    ),
+    'enable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+    'disable' => array(
+        'execute_sql' => 1,
+        'clear_db_cache' => 1,
+    ),
+
+    /**
+     * Dependencies Section
+     */
+    'dependencies' => array(),
+);
+
+/** @} */

+ 20 - 0
modules/boonex/fontawesome/install/installer.php

@@ -0,0 +1,20 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxFontAwesomeInstaller extends BxDolStudioInstaller
+{
+    function __construct($aConfig)
+    {
+        parent::__construct($aConfig);
+    }
+}
+
+/** @} */

+ 8 - 0
modules/boonex/fontawesome/install/langs/en.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources name="en" flag="gb" title="English">
+	<string name="_sys_module_fontawesome"><![CDATA[Font Awesome Pro]]></string>
+    <string name="_bx_fontawesome"><![CDATA[Font Awesome Pro]]></string>
+    <string name="_bx_fontawesome_adm_stg_cpt_type"><![CDATA[Font Awesome Pro]]></string>
+    <string name="_bx_fontawesome_adm_stg_cpt_category_general"><![CDATA[General]]></string>
+    <string name="_bx_fontawesome_option_light_icons"><![CDATA[Light icons]]></string>
+</resources>

+ 18 - 0
modules/boonex/fontawesome/install/sql/disable.sql

@@ -0,0 +1,18 @@
+
+-- 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_fontawesome';
+
+-- Alerts
+
+SET @iHandlerId := (SELECT `id` FROM `sys_alerts_handlers` WHERE `name` = 'bx_fontawesome');
+
+DELETE FROM `sys_alerts_handlers` WHERE `id`  = @iHandlerId;
+DELETE FROM `sys_alerts` WHERE `handler_id` =  @iHandlerId ;
+
+-- CSS Loader
+
+UPDATE `sys_preloader` SET `active` = 1 WHERE `module` = 'system' AND `type` = 'css_system' AND `content` = 'icons.css';
+
+DELETE FROM `sys_preloader` WHERE `module` = 'bx_fontawesome';
+

+ 34 - 0
modules/boonex/fontawesome/install/sql/enable.sql

@@ -0,0 +1,34 @@
+
+-- 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_fontawesome', '_bx_fontawesome_adm_stg_cpt_type', 'bx_fontawesome@modules/boonex/fontawesome/|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_fontawesome_general', '_bx_fontawesome_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_fontawesome_option_light_icons', '', @iCategId, '_bx_fontawesome_option_light_icons', 'checkbox', '', '', '', 10);
+
+
+-- Alerts
+
+INSERT INTO `sys_alerts_handlers` SET `name` = 'bx_fontawesome', `class` = 'BxFontAwesomeAlerts', `file` = 'modules/boonex/fontawesome/classes/BxFontAwesomeAlerts.php';
+
+SET @iHandlerId := (SELECT `id` FROM `sys_alerts_handlers`  WHERE `name` = 'bx_fontawesome');
+
+INSERT INTO `sys_alerts` (`unit`, `action`, `handler_id`) VALUES
+('system', 'save_setting', @iHandlerId);
+
+-- CSS Loader
+
+UPDATE `sys_preloader` SET `active` = 0 WHERE `module` = 'system' AND `type` = 'css_system' AND `content` = 'icons.css';
+
+INSERT INTO `sys_preloader` (`module`, `type`, `content`, `active`) VALUES
+('bx_fontawesome', 'css_system', 'icons.css', 1),
+('bx_fontawesome', 'css_system', 'fonts-all.css', 1),
+('bx_fontawesome', 'css_system', 'fonts-light.css', 0);
+

+ 15 - 0
modules/boonex/fontawesome/install/sql/install.sql

@@ -0,0 +1,15 @@
+
+
+-- Studio page and widget
+
+INSERT INTO `sys_std_pages`(`index`, `name`, `header`, `caption`, `icon`) VALUES
+(3, 'bx_fontawesome', '_bx_fontawesome', '_bx_fontawesome', 'bx_fontawesome@modules/boonex/fontawesome/|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_fontawesome', '{url_studio}module.php?name=bx_fontawesome', '', 'bx_fontawesome@modules/boonex/fontawesome/|std-icon.svg', '_bx_fontawesome', '', '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));
+

+ 7 - 0
modules/boonex/fontawesome/install/sql/uninstall.sql

@@ -0,0 +1,7 @@
+
+-- Studio page and widget
+
+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_fontawesome';
+

+ 20 - 0
modules/boonex/fontawesome/request.php

@@ -0,0 +1,20 @@
+<?php
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    FontAwesome Font Awesome Pro integration
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+check_logged();
+
+if ( empty($aRequest) || empty($aRequest[0]) ) {
+    BxDolRequest::processAsFile($aModule, $aRequest);
+} else {
+    BxDolRequest::processAsAction($aModule, $aRequest);
+}
+
+/** @} */

+ 55 - 0
modules/boonex/fontawesome/template/css/fonts-all.css

@@ -0,0 +1,55 @@
+@font-face {
+  font-family: 'sys-user';
+  font-style: normal;
+  font-weight: 900;
+  src: url("../fonts/fa-solid-900.eot");
+  src: url("../fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.woff") format("woff"), url("../fonts/fa-solid-900.ttf") format("truetype"), url("../fonts/fa-solid-900.svg#fontawesome") format("svg");
+}
+
+.fa, .fas, .sys-icon {
+    font-family:"sys-user", sans-serif;
+    font-weight:900;
+    font-style:normal;
+}
+
+@font-face {
+  font-family: 'sys-user-far';
+  font-style: normal;
+  font-weight: 400;
+  src: url("../fonts/fa-regular-400.eot");
+  src: url("../fonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.woff") format("woff"), url("../fonts/fa-regular-400.ttf") format("truetype"), url("../fonts/fa-regular-400.svg#fontawesome") format("svg"); 
+}
+
+.far, .sys-icon.far {
+    font-family:"sys-user-far", sans-serif;
+    font-weight:400; 
+    font-style:normal;
+}
+
+@font-face {
+    font-family: 'sys-user-fab';
+    font-style: normal;
+    font-weight: normal;
+    src: url("../fonts/fa-brands-400.eot");
+    src: url("../fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.woff") format("woff"), url("../fonts/fa-brands-400.ttf") format("truetype"), url("../fonts/fa-brands-400.svg#fontawesome") format("svg"); 
+}
+
+.fab, .sys-icon.fab {
+    font-family:'sys-user-fab';
+    font-style:normal;
+}
+
+@font-face {
+    font-family: 'sys-user-fal';
+    font-style: normal;
+    font-weight: 300;
+    src: url("../fonts/fa-light-300.eot");
+    src: url("../fonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-light-300.woff2") format("woff2"), url("../fonts/fa-light-300.woff") format("woff"), url("../fonts/fa-light-300.ttf") format("truetype"), url("../fonts/fa-light-300.svg#fontawesome") format("svg");
+}
+
+.fal, .sys-icon.fal {
+    font-family:'sys-user-fal';
+    font-weight:300;
+    font-style:normal;
+}
+  

+ 16 - 0
modules/boonex/fontawesome/template/css/fonts-light.css

@@ -0,0 +1,16 @@
+@font-face {
+    font-family: 'sys-user-fal';
+    font-style: normal;
+    font-weight: 300;
+    src: url("../fonts/fa-light-300.eot");
+    src: url("../fonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-light-300.woff2") format("woff2"), url("../fonts/fa-light-300.woff") format("woff"), url("../fonts/fa-light-300.ttf") format("truetype"), url("../fonts/fa-light-300.svg#fontawesome") format("svg");
+}
+
+.fa, .fas, .sys-icon,
+.fab, .sys-icon.fab,
+.far, .sys-icon.far,
+.fal, .sys-icon.fal {
+    font-family:'sys-user-fal';
+    font-weight:300;
+    font-style:normal;
+}

+ 3712 - 0
modules/boonex/fontawesome/template/css/icons.css

@@ -0,0 +1,3712 @@
+
+.sys-icon.500px:before, .fa-500px:before {
+  content: "\f26e"; }
+
+.sys-icon.accessible-icon:before, .fa-accessible-icon:before {
+  content: "\f368"; }
+
+.sys-icon.accusoft:before, .fa-accusoft:before {
+  content: "\f369"; }
+
+.sys-icon.address-book:before, .fa-address-book:before {
+  content: "\f2b9"; }
+
+.sys-icon.address-card:before, .fa-address-card:before {
+  content: "\f2bb"; }
+
+.sys-icon.adjust:before, .fa-adjust:before {
+  content: "\f042"; }
+
+.sys-icon.adn:before, .fa-adn:before {
+  content: "\f170"; }
+
+.sys-icon.adversal:before, .fa-adversal:before {
+  content: "\f36a"; }
+
+.sys-icon.affiliatetheme:before, .fa-affiliatetheme:before {
+  content: "\f36b"; }
+
+.sys-icon.alarm-clock:before, .fa-alarm-clock:before {
+  content: "\f34e"; }
+
+.sys-icon.algolia:before, .fa-algolia:before {
+  content: "\f36c"; }
+
+.sys-icon.align-center:before, .fa-align-center:before {
+  content: "\f037"; }
+
+.sys-icon.align-justify:before, .fa-align-justify:before {
+  content: "\f039"; }
+
+.sys-icon.align-left:before, .fa-align-left:before {
+  content: "\f036"; }
+
+.sys-icon.align-right:before, .fa-align-right:before {
+  content: "\f038"; }
+
+.sys-icon.allergies:before, .fa-allergies:before {
+  content: "\f461"; }
+
+.sys-icon.amazon:before, .fa-amazon:before {
+  content: "\f270"; }
+
+.sys-icon.amazon-pay:before, .fa-amazon-pay:before {
+  content: "\f42c"; }
+
+.sys-icon.ambulance:before, .fa-ambulance:before {
+  content: "\f0f9"; }
+
+.sys-icon.american-sign-language-interpreting:before, .fa-american-sign-language-interpreting:before {
+  content: "\f2a3"; }
+
+.sys-icon.amilia:before, .fa-amilia:before {
+  content: "\f36d"; }
+
+.sys-icon.anchor:before, .fa-anchor:before {
+  content: "\f13d"; }
+
+.sys-icon.android:before, .fa-android:before {
+  content: "\f17b"; }
+
+.sys-icon.angellist:before, .fa-angellist:before {
+  content: "\f209"; }
+
+.sys-icon.angle-double-down:before, .fa-angle-double-down:before {
+  content: "\f103"; }
+
+.sys-icon.angle-double-left:before, .fa-angle-double-left:before {
+  content: "\f100"; }
+
+.sys-icon.angle-double-right:before, .fa-angle-double-right:before {
+  content: "\f101"; }
+
+.sys-icon.angle-double-up:before, .fa-angle-double-up:before {
+  content: "\f102"; }
+
+.sys-icon.angle-down:before, .fa-angle-down:before {
+  content: "\f107"; }
+
+.sys-icon.angle-left:before, .fa-angle-left:before {
+  content: "\f104"; }
+
+.sys-icon.angle-right:before, .fa-angle-right:before {
+  content: "\f105"; }
+
+.sys-icon.angle-up:before, .fa-angle-up:before {
+  content: "\f106"; }
+
+.sys-icon.angrycreative:before, .fa-angrycreative:before {
+  content: "\f36e"; }
+
+.sys-icon.angular:before, .fa-angular:before {
+  content: "\f420"; }
+
+.sys-icon.app-store:before, .fa-app-store:before {
+  content: "\f36f"; }
+
+.sys-icon.app-store-ios:before, .fa-app-store-ios:before {
+  content: "\f370"; }
+
+.sys-icon.apper:before, .fa-apper:before {
+  content: "\f371"; }
+
+.sys-icon.apple:before, .fa-apple:before {
+  content: "\f179"; }
+
+.sys-icon.apple-pay:before, .fa-apple-pay:before {
+  content: "\f415"; }
+
+.sys-icon.archive:before, .fa-archive:before {
+  content: "\f187"; }
+
+.sys-icon.arrow-alt-circle-down:before, .fa-arrow-alt-circle-down:before {
+  content: "\f358"; }
+
+.sys-icon.arrow-alt-circle-left:before, .fa-arrow-alt-circle-left:before {
+  content: "\f359"; }
+
+.sys-icon.arrow-alt-circle-right:before, .fa-arrow-alt-circle-right:before {
+  content: "\f35a"; }
+
+.sys-icon.arrow-alt-circle-up:before, .fa-arrow-alt-circle-up:before {
+  content: "\f35b"; }
+
+.sys-icon.arrow-alt-down:before, .fa-arrow-alt-down:before {
+  content: "\f354"; }
+
+.sys-icon.arrow-alt-from-bottom:before, .fa-arrow-alt-from-bottom:before {
+  content: "\f346"; }
+
+.sys-icon.arrow-alt-from-left:before, .fa-arrow-alt-from-left:before {
+  content: "\f347"; }
+
+.sys-icon.arrow-alt-from-right:before, .fa-arrow-alt-from-right:before {
+  content: "\f348"; }
+
+.sys-icon.arrow-alt-from-top:before, .fa-arrow-alt-from-top:before {
+  content: "\f349"; }
+
+.sys-icon.arrow-alt-left:before, .fa-arrow-alt-left:before {
+  content: "\f355"; }
+
+.sys-icon.arrow-alt-right:before, .fa-arrow-alt-right:before {
+  content: "\f356"; }
+
+.sys-icon.arrow-alt-square-down:before, .fa-arrow-alt-square-down:before {
+  content: "\f350"; }
+
+.sys-icon.arrow-alt-square-left:before, .fa-arrow-alt-square-left:before {
+  content: "\f351"; }
+
+.sys-icon.arrow-alt-square-right:before, .fa-arrow-alt-square-right:before {
+  content: "\f352"; }
+
+.sys-icon.arrow-alt-square-up:before, .fa-arrow-alt-square-up:before {
+  content: "\f353"; }
+
+.sys-icon.arrow-alt-to-bottom:before, .fa-arrow-alt-to-bottom:before {
+  content: "\f34a"; }
+
+.sys-icon.arrow-alt-to-left:before, .fa-arrow-alt-to-left:before {
+  content: "\f34b"; }
+
+.sys-icon.arrow-alt-to-right:before, .fa-arrow-alt-to-right:before {
+  content: "\f34c"; }
+
+.sys-icon.arrow-alt-to-top:before, .fa-arrow-alt-to-top:before {
+  content: "\f34d"; }
+
+.sys-icon.arrow-alt-up:before, .fa-arrow-alt-up:before {
+  content: "\f357"; }
+
+.sys-icon.arrow-circle-down:before, .fa-arrow-circle-down:before {
+  content: "\f0ab"; }
+
+.sys-icon.arrow-circle-left:before, .fa-arrow-circle-left:before {
+  content: "\f0a8"; }
+
+.sys-icon.arrow-circle-right:before, .fa-arrow-circle-right:before {
+  content: "\f0a9"; }
+
+.sys-icon.arrow-circle-up:before, .fa-arrow-circle-up:before {
+  content: "\f0aa"; }
+
+.sys-icon.arrow-down:before, .fa-arrow-down:before {
+  content: "\f063"; }
+
+.sys-icon.arrow-from-bottom:before, .fa-arrow-from-bottom:before {
+  content: "\f342"; }
+
+.sys-icon.arrow-from-left:before, .fa-arrow-from-left:before {
+  content: "\f343"; }
+
+.sys-icon.arrow-from-right:before, .fa-arrow-from-right:before {
+  content: "\f344"; }
+
+.sys-icon.arrow-from-top:before, .fa-arrow-from-top:before {
+  content: "\f345"; }
+
+.sys-icon.arrow-left:before, .fa-arrow-left:before {
+  content: "\f060"; }
+
+.sys-icon.arrow-right:before, .fa-arrow-right:before {
+  content: "\f061"; }
+
+.sys-icon.arrow-square-down:before, .fa-arrow-square-down:before {
+  content: "\f339"; }
+
+.sys-icon.arrow-square-left:before, .fa-arrow-square-left:before {
+  content: "\f33a"; }
+
+.sys-icon.arrow-square-right:before, .fa-arrow-square-right:before {
+  content: "\f33b"; }
+
+.sys-icon.arrow-square-up:before, .fa-arrow-square-up:before {
+  content: "\f33c"; }
+
+.sys-icon.arrow-to-bottom:before, .fa-arrow-to-bottom:before {
+  content: "\f33d"; }
+
+.sys-icon.arrow-to-left:before, .fa-arrow-to-left:before {
+  content: "\f33e"; }
+
+.sys-icon.arrow-to-right:before, .fa-arrow-to-right:before {
+  content: "\f340"; }
+
+.sys-icon.arrow-to-top:before, .fa-arrow-to-top:before {
+  content: "\f341"; }
+
+.sys-icon.arrow-up:before, .fa-arrow-up:before {
+  content: "\f062"; }
+
+.sys-icon.arrows:before, .fa-arrows:before {
+  content: "\f047"; }
+
+.sys-icon.arrows-alt:before, .sys-icon.move:before, .fa-arrows-alt:before {
+  content: "\f0b2"; }
+
+.sys-icon.arrows-alt-h:before, .fa-arrows-alt-h:before {
+  content: "\f337"; }
+
+.sys-icon.arrows-alt-v:before, .fa-arrows-alt-v:before {
+  content: "\f338"; }
+
+.sys-icon.arrows-h:before, .fa-arrows-h:before {
+  content: "\f07e"; }
+
+.sys-icon.arrows-v:before, .fa-arrows-v:before {
+  content: "\f07d"; }
+
+.sys-icon.assistive-listening-systems:before, .fa-assistive-listening-systems:before {
+  content: "\f2a2"; }
+
+.sys-icon.asterisk:before, .fa-asterisk:before {
+  content: "\f069"; }
+
+.sys-icon.asymmetrik:before, .fa-asymmetrik:before {
+  content: "\f372"; }
+
+.sys-icon.at:before, .fa-at:before {
+  content: "\f1fa"; }
+
+.sys-icon.audible:before, .fa-audible:before {
+  content: "\f373"; }
+
+.sys-icon.audio-description:before, .fa-audio-description:before {
+  content: "\f29e"; }
+
+.sys-icon.autoprefixer:before, .fa-autoprefixer:before {
+  content: "\f41c"; }
+
+.sys-icon.avianex:before, .fa-avianex:before {
+  content: "\f374"; }
+
+.sys-icon.aviato:before, .fa-aviato:before {
+  content: "\f421"; }
+
+.sys-icon.aws:before, .fa-aws:before {
+  content: "\f375"; }
+
+.sys-icon.backward:before, .fa-backward:before {
+  content: "\f04a"; }
+
+.sys-icon.badge:before, .fa-badge:before {
+  content: "\f335"; }
+
+.sys-icon.badge-check:before, .fa-badge-check:before {
+  content: "\f336"; }
+
+.sys-icon.balance-scale:before, .fa-balance-scale:before {
+  content: "\f24e"; }
+
+.sys-icon.balance-scale-left:before, .fa-balance-scale-left:before {
+  content: "\f515"; }
+
+.sys-icon.balance-scale-right:before, .fa-balance-scale-right:before {
+  content: "\f516"; }
+
+.sys-icon.ban:before, .fa-ban:before {
+  content: "\f05e"; }
+
+.sys-icon.band-aid:before, .fa-band-aid:before {
+  content: "\f462"; }
+
+.sys-icon.bandcamp:before, .fa-bandcamp:before {
+  content: "\f2d5"; }
+
+.sys-icon.barcode:before, .fa-barcode:before {
+  content: "\f02a"; }
+
+.sys-icon.barcode-alt:before, .fa-barcode-alt:before {
+  content: "\f463"; }
+
+.sys-icon.barcode-read:before, .fa-barcode-read:before {
+  content: "\f464"; }
+
+.sys-icon.barcode-scan:before, .fa-barcode-scan:before {
+  content: "\f465"; }
+
+.sys-icon.bars:before, .fa-bars:before {
+  content: "\f0c9"; }
+
+.sys-icon.baseball:before, .fa-baseball:before {
+  content: "\f432"; }
+
+.sys-icon.baseball-ball:before, .fa-baseball-ball:before {
+  content: "\f433"; }
+
+.sys-icon.basketball-ball:before, .fa-basketball-ball:before {
+  content: "\f434"; }
+
+.sys-icon.basketball-hoop:before, .fa-basketball-hoop:before {
+  content: "\f435"; }
+
+.sys-icon.bath:before, .fa-bath:before {
+  content: "\f2cd"; }
+
+.sys-icon.battery-bolt:before, .fa-battery-bolt:before {
+  content: "\f376"; }
+
+.sys-icon.battery-empty:before, .fa-battery-empty:before {
+  content: "\f244"; }
+
+.sys-icon.battery-full:before, .fa-battery-full:before {
+  content: "\f240"; }
+
+.sys-icon.battery-half:before, .fa-battery-half:before {
+  content: "\f242"; }
+
+.sys-icon.battery-quarter:before, .fa-battery-quarter:before {
+  content: "\f243"; }
+
+.sys-icon.battery-slash:before, .fa-battery-slash:before {
+  content: "\f377"; }
+
+.sys-icon.battery-three-quarters:before, .fa-battery-three-quarters:before {
+  content: "\f241"; }
+
+.sys-icon.bed:before, .fa-bed:before {
+  content: "\f236"; }
+
+.sys-icon.beer:before, .fa-beer:before {
+  content: "\f0fc"; }
+
+.sys-icon.behance:before, .fa-behance:before {
+  content: "\f1b4"; }
+
+.sys-icon.behance-square:before, .fa-behance-square:before {
+  content: "\f1b5"; }
+
+.sys-icon.bell:before, .fa-bell:before {
+  content: "\f0f3"; }
+
+.sys-icon.bell-slash:before, .fa-bell-slash:before {
+  content: "\f1f6"; }
+
+.sys-icon.bicycle:before, .fa-bicycle:before {
+  content: "\f206"; }
+
+.sys-icon.bimobject:before, .fa-bimobject:before {
+  content: "\f378"; }
+
+.sys-icon.binoculars:before, .fa-binoculars:before {
+  content: "\f1e5"; }
+
+.sys-icon.birthday-cake:before, .fa-birthday-cake:before {
+  content: "\f1fd"; }
+
+.sys-icon.bitbucket:before, .fa-bitbucket:before {
+  content: "\f171"; }
+
+.sys-icon.bitcoin:before, .fa-bitcoin:before {
+  content: "\f379"; }
+
+.sys-icon.bity:before, .fa-bity:before {
+  content: "\f37a"; }
+
+.sys-icon.black-tie:before, .fa-black-tie:before {
+  content: "\f27e"; }
+
+.sys-icon.blackberry:before, .fa-blackberry:before {
+  content: "\f37b"; }
+
+.sys-icon.blanket:before, .fa-blanket:before {
+  content: "\f498"; }
+
+.sys-icon.blender:before, .fa-blender:before {
+  content: "\f517"; }
+
+.sys-icon.blind:before, .fa-blind:before {
+  content: "\f29d"; }
+
+.sys-icon.blogger:before, .fa-blogger:before {
+  content: "\f37c"; }
+
+.sys-icon.blogger-b:before, .fa-blogger-b:before {
+  content: "\f37d"; }
+
+.sys-icon.bluetooth:before, .fa-bluetooth:before {
+  content: "\f293"; }
+
+.sys-icon.bluetooth-b:before, .fa-bluetooth-b:before {
+  content: "\f294"; }
+
+.sys-icon.bold:before, .fa-bold:before {
+  content: "\f032"; }
+
+.sys-icon.bolt:before, .fa-bolt:before {
+  content: "\f0e7"; }
+
+.sys-icon.bomb:before, .fa-bomb:before {
+  content: "\f1e2"; }
+
+.sys-icon.book:before, .fa-book:before {
+  content: "\f02d"; }
+
+.sys-icon.book-heart:before, .fa-book-heart:before {
+  content: "\f499"; }
+
+.sys-icon.book-open:before, .fa-book-open:before {
+  content: "\f518"; }
+
+.sys-icon.bookmark:before, .fa-bookmark:before {
+  content: "\f02e"; }
+
+.sys-icon.bowling-ball:before, .fa-bowling-ball:before {
+  content: "\f436"; }
+
+.sys-icon.bowling-pins:before, .fa-bowling-pins:before {
+  content: "\f437"; }
+
+.sys-icon.box:before, .fa-box:before {
+  content: "\f466"; }
+
+.sys-icon.box-alt:before, .fa-box-alt:before {
+  content: "\f49a"; }
+
+.sys-icon.box-check:before, .fa-box-check:before {
+  content: "\f467"; }
+
+.sys-icon.box-fragile:before, .fa-box-fragile:before {
+  content: "\f49b"; }
+
+.sys-icon.box-full:before, .fa-box-full:before {
+  content: "\f49c"; }
+
+.sys-icon.box-heart:before, .fa-box-heart:before {
+  content: "\f49d"; }
+
+.sys-icon.box-open:before, .fa-box-open:before {
+  content: "\f49e"; }
+
+.sys-icon.box-up:before, .fa-box-up:before {
+  content: "\f49f"; }
+
+.sys-icon.box-usd:before, .fa-box-usd:before {
+  content: "\f4a0"; }
+
+.sys-icon.boxes:before, .fa-boxes:before {
+  content: "\f468"; }
+
+.sys-icon.boxes-alt:before, .fa-boxes-alt:before {
+  content: "\f4a1"; }
+
+.sys-icon.boxing-glove:before, .fa-boxing-glove:before {
+  content: "\f438"; }
+
+.sys-icon.braille:before, .fa-braille:before {
+  content: "\f2a1"; }
+
+.sys-icon.briefcase:before, .fa-briefcase:before {
+  content: "\f0b1"; }
+
+.sys-icon.briefcase-medical:before, .fa-briefcase-medical:before {
+  content: "\f469"; }
+
+.sys-icon.broadcast-tower:before, .fa-broadcast-tower:before {
+  content: "\f519"; }
+
+.sys-icon.broom:before, .fa-broom:before {
+  content: "\f51a"; }
+
+.sys-icon.browser:before, .fa-browser:before {
+  content: "\f37e"; }
+
+.sys-icon.btc:before, .fa-btc:before {
+  content: "\f15a"; }
+
+.sys-icon.bug:before, .fa-bug:before {
+  content: "\f188"; }
+
+.sys-icon.building:before, .fa-building:before {
+  content: "\f1ad"; }
+
+.sys-icon.bullhorn:before, .fa-bullhorn:before {
+  content: "\f0a1"; }
+
+.sys-icon.bullseye:before, .fa-bullseye:before {
+  content: "\f140"; }
+
+.sys-icon.burn:before, .fa-burn:before {
+  content: "\f46a"; }
+
+.sys-icon.buromobelexperte:before, .fa-buromobelexperte:before {
+  content: "\f37f"; }
+
+.sys-icon.bus:before, .fa-bus:before {
+  content: "\f207"; }
+
+.sys-icon.buysellads:before, .fa-buysellads:before {
+  content: "\f20d"; }
+
+.sys-icon.calculator:before, .fa-calculator:before {
+  content: "\f1ec"; }
+
+.sys-icon.calendar:before, .fa-calendar:before {
+  content: "\f133"; }
+
+.sys-icon.calendar-alt:before, .fa-calendar-alt:before {
+  content: "\f073"; }
+
+.sys-icon.calendar-check:before, .fa-calendar-check:before {
+  content: "\f274"; }
+
+.sys-icon.calendar-edit:before, .fa-calendar-edit:before {
+  content: "\f333"; }
+
+.sys-icon.calendar-exclamation:before, .fa-calendar-exclamation:before {
+  content: "\f334"; }
+
+.sys-icon.calendar-minus:before, .fa-calendar-minus:before {
+  content: "\f272"; }
+
+.sys-icon.calendar-plus:before, .fa-calendar-plus:before {
+  content: "\f271"; }
+
+.sys-icon.calendar-times:before, .fa-calendar-times:before {
+  content: "\f273"; }
+
+.sys-icon.camera:before, .fa-camera:before {
+  content: "\f030"; }
+
+.sys-icon.camera-alt:before, .fa-camera-alt:before {
+  content: "\f332"; }
+
+.sys-icon.camera-retro:before, .fa-camera-retro:before {
+  content: "\f083"; }
+
+.sys-icon.capsules:before, .fa-capsules:before {
+  content: "\f46b"; }
+
+.sys-icon.car:before, .fa-car:before {
+  content: "\f1b9"; }
+
+.sys-icon.caret-circle-down:before, .fa-caret-circle-down:before {
+  content: "\f32d"; }
+
+.sys-icon.caret-circle-left:before, .fa-caret-circle-left:before {
+  content: "\f32e"; }
+
+.sys-icon.caret-circle-right:before, .fa-caret-circle-right:before {
+  content: "\f330"; }
+
+.sys-icon.caret-circle-up:before, .fa-caret-circle-up:before {
+  content: "\f331"; }
+
+.sys-icon.caret-down:before, .fa-caret-down:before {
+  content: "\f0d7"; }
+
+.sys-icon.caret-left:before, .fa-caret-left:before {
+  content: "\f0d9"; }
+
+.sys-icon.caret-right:before, .fa-caret-right:before {
+  content: "\f0da"; }
+
+.sys-icon.caret-square-down:before, .fa-caret-square-down:before {
+  content: "\f150"; }
+
+.sys-icon.caret-square-left:before, .fa-caret-square-left:before {
+  content: "\f191"; }
+
+.sys-icon.caret-square-right:before, .fa-caret-square-right:before {
+  content: "\f152"; }
+
+.sys-icon.caret-square-up:before, .fa-caret-square-up:before {
+  content: "\f151"; }
+
+.sys-icon.caret-up:before, .fa-caret-up:before {
+  content: "\f0d8"; }
+
+.sys-icon.cart-arrow-down:before, .fa-cart-arrow-down:before {
+  content: "\f218"; }
+
+.sys-icon.cart-plus:before, .fa-cart-plus:before {
+  content: "\f217"; }
+
+.sys-icon.cc-amazon-pay:before, .fa-cc-amazon-pay:before {
+  content: "\f42d"; }
+
+.sys-icon.cc-amex:before, .fa-cc-amex:before {
+  content: "\f1f3"; }
+
+.sys-icon.cc-apple-pay:before, .fa-cc-apple-pay:before {
+  content: "\f416"; }
+
+.sys-icon.cc-diners-club:before, .fa-cc-diners-club:before {
+  content: "\f24c"; }
+
+.sys-icon.cc-discover:before, .fa-cc-discover:before {
+  content: "\f1f2"; }
+
+.sys-icon.cc-jcb:before, .fa-cc-jcb:before {
+  content: "\f24b"; }
+
+.sys-icon.cc-mastercard:before, .fa-cc-mastercard:before {
+  content: "\f1f1"; }
+
+.sys-icon.cc-paypal:before, .fa-cc-paypal:before {
+  content: "\f1f4"; }
+
+.sys-icon.cc-stripe:before, .fa-cc-stripe:before {
+  content: "\f1f5"; }
+
+.sys-icon.cc-visa:before, .fa-cc-visa:before {
+  content: "\f1f0"; }
+
+.sys-icon.centercode:before, .fa-centercode:before {
+  content: "\f380"; }
+
+.sys-icon.certificate:before, .fa-certificate:before {
+  content: "\f0a3"; }
+
+.sys-icon.chalkboard:before, .fa-chalkboard:before {
+  content: "\f51b"; }
+
+.sys-icon.chalkboard-teacher:before, .fa-chalkboard-teacher:before {
+  content: "\f51c"; }
+
+.sys-icon.chart-area:before, .fa-chart-area:before {
+  content: "\f1fe"; }
+
+.sys-icon.chart-bar:before, .fa-chart-bar:before {
+  content: "\f080"; }
+
+.sys-icon.chart-line:before, .fa-chart-line:before {
+  content: "\f201"; }
+
+.sys-icon.chart-pie:before, .fa-chart-pie:before {
+  content: "\f200"; }
+
+.sys-icon.check:before, .fa-check:before {
+  content: "\f00c"; }
+
+.sys-icon.check-circle:before, .fa-check-circle:before {
+  content: "\f058"; }
+
+.sys-icon.check-square:before, .fa-check-square:before {
+  content: "\f14a"; }
+
+.sys-icon.chess:before, .fa-chess:before {
+  content: "\f439"; }
+
+.sys-icon.chess-bishop:before, .fa-chess-bishop:before {
+  content: "\f43a"; }
+
+.sys-icon.chess-bishop-alt:before, .fa-chess-bishop-alt:before {
+  content: "\f43b"; }
+
+.sys-icon.chess-board:before, .fa-chess-board:before {
+  content: "\f43c"; }
+
+.sys-icon.chess-clock:before, .fa-chess-clock:before {
+  content: "\f43d"; }
+
+.sys-icon.chess-clock-alt:before, .fa-chess-clock-alt:before {
+  content: "\f43e"; }
+
+.sys-icon.chess-king:before, .fa-chess-king:before {
+  content: "\f43f"; }
+
+.sys-icon.chess-king-alt:before, .fa-chess-king-alt:before {
+  content: "\f440"; }
+
+.sys-icon.chess-knight:before, .fa-chess-knight:before {
+  content: "\f441"; }
+
+.sys-icon.chess-knight-alt:before, .fa-chess-knight-alt:before {
+  content: "\f442"; }
+
+.sys-icon.chess-pawn:before, .fa-chess-pawn:before {
+  content: "\f443"; }
+
+.sys-icon.chess-pawn-alt:before, .fa-chess-pawn-alt:before {
+  content: "\f444"; }
+
+.sys-icon.chess-queen:before, .fa-chess-queen:before {
+  content: "\f445"; }
+
+.sys-icon.chess-queen-alt:before, .fa-chess-queen-alt:before {
+  content: "\f446"; }
+
+.sys-icon.chess-rook:before, .fa-chess-rook:before {
+  content: "\f447"; }
+
+.sys-icon.chess-rook-alt:before, .fa-chess-rook-alt:before {
+  content: "\f448"; }
+
+.sys-icon.chevron-circle-down:before, .fa-chevron-circle-down:before {
+  content: "\f13a"; }
+
+.sys-icon.chevron-circle-left:before, .fa-chevron-circle-left:before {
+  content: "\f137"; }
+
+.sys-icon.chevron-circle-right:before, .fa-chevron-circle-right:before {
+  content: "\f138"; }
+
+.sys-icon.chevron-circle-up:before, .fa-chevron-circle-up:before {
+  content: "\f139"; }
+
+.sys-icon.chevron-double-down:before, .fa-chevron-double-down:before {
+  content: "\f322"; }
+
+.sys-icon.chevron-double-left:before, .fa-chevron-double-left:before {
+  content: "\f323"; }
+
+.sys-icon.chevron-double-right:before, .fa-chevron-double-right:before {
+  content: "\f324"; }
+
+.sys-icon.chevron-double-up:before, .fa-chevron-double-up:before {
+  content: "\f325"; }
+
+.sys-icon.chevron-down:before, .fa-chevron-down:before {
+  content: "\f078"; }
+
+.sys-icon.chevron-left:before, .fa-chevron-left:before {
+  content: "\f053"; }
+
+.sys-icon.chevron-right:before, .fa-chevron-right:before {
+  content: "\f054"; }
+
+.sys-icon.chevron-square-down:before, .fa-chevron-square-down:before {
+  content: "\f329"; }
+
+.sys-icon.chevron-square-left:before, .fa-chevron-square-left:before {
+  content: "\f32a"; }
+
+.sys-icon.chevron-square-right:before, .fa-chevron-square-right:before {
+  content: "\f32b"; }
+
+.sys-icon.chevron-square-up:before, .fa-chevron-square-up:before {
+  content: "\f32c"; }
+
+.sys-icon.chevron-up:before, .fa-chevron-up:before {
+  content: "\f077"; }
+
+.sys-icon.child:before, .fa-child:before {
+  content: "\f1ae"; }
+
+.sys-icon.chrome:before, .fa-chrome:before {
+  content: "\f268"; }
+
+.sys-icon.church:before, .fa-church:before {
+  content: "\f51d"; }
+
+.sys-icon.circle:before, .fa-circle:before {
+  content: "\f111"; }
+
+.sys-icon.circle-notch:before, .fa-circle-notch:before {
+  content: "\f1ce"; }
+
+.sys-icon.clipboard:before, .fa-clipboard:before {
+  content: "\f328"; }
+
+.sys-icon.clipboard-check:before, .fa-clipboard-check:before {
+  content: "\f46c"; }
+
+.sys-icon.clipboard-list:before, .fa-clipboard-list:before {
+  content: "\f46d"; }
+
+.sys-icon.clock:before, .fa-clock:before {
+  content: "\f017"; }
+
+.sys-icon.clone:before, .fa-clone:before {
+  content: "\f24d"; }
+
+.sys-icon.closed-captioning:before, .fa-closed-captioning:before {
+  content: "\f20a"; }
+
+.sys-icon.cloud:before, .fa-cloud:before {
+  content: "\f0c2"; }
+
+.sys-icon.cloud-download:before, .fa-cloud-download:before {
+  content: "\f0ed"; }
+
+.sys-icon.cloud-download-alt:before, .fa-cloud-download-alt:before {
+  content: "\f381"; }
+
+.sys-icon.cloud-upload:before, .fa-cloud-upload:before {
+  content: "\f0ee"; }
+
+.sys-icon.cloud-upload-alt:before, .fa-cloud-upload-alt:before {
+  content: "\f382"; }
+
+.sys-icon.cloudscale:before, .fa-cloudscale:before {
+  content: "\f383"; }
+
+.sys-icon.cloudsmith:before, .fa-cloudsmith:before {
+  content: "\f384"; }
+
+.sys-icon.cloudversify:before, .fa-cloudversify:before {
+  content: "\f385"; }
+
+.sys-icon.club:before, .fa-club:before {
+  content: "\f327"; }
+
+.sys-icon.code:before, .fa-code:before {
+  content: "\f121"; }
+
+.sys-icon.code-branch:before, .fa-code-branch:before {
+  content: "\f126"; }
+
+.sys-icon.code-commit:before, .fa-code-commit:before {
+  content: "\f386"; }
+
+.sys-icon.code-merge:before, .fa-code-merge:before {
+  content: "\f387"; }
+
+.sys-icon.codepen:before, .fa-codepen:before {
+  content: "\f1cb"; }
+
+.sys-icon.codiepie:before, .fa-codiepie:before {
+  content: "\f284"; }
+
+.sys-icon.coffee:before, .fa-coffee:before {
+  content: "\f0f4"; }
+
+.sys-icon.cog:before, .fa-cog:before {
+  content: "\f013"; }
+
+.sys-icon.cogs:before, .fa-cogs:before {
+  content: "\f085"; }
+
+.sys-icon.coins:before, .fa-coins:before {
+  content: "\f51e"; }
+
+.sys-icon.columns:before, .fa-columns:before {
+  content: "\f0db"; }
+
+.sys-icon.comment:before, .fa-comment:before {
+  content: "\f075"; }
+
+.sys-icon.comment-alt:before, .fa-comment-alt:before {
+  content: "\f27a"; }
+
+.sys-icon.comment-alt-check:before, .fa-comment-alt-check:before {
+  content: "\f4a2"; }
+
+.sys-icon.comment-alt-dots:before, .fa-comment-alt-dots:before {
+  content: "\f4a3"; }
+
+.sys-icon.comment-alt-edit:before, .fa-comment-alt-edit:before {
+  content: "\f4a4"; }
+
+.sys-icon.comment-alt-exclamation:before, .fa-comment-alt-exclamation:before {
+  content: "\f4a5"; }
+
+.sys-icon.comment-alt-lines:before, .fa-comment-alt-lines:before {
+  content: "\f4a6"; }
+
+.sys-icon.comment-alt-minus:before, .fa-comment-alt-minus:before {
+  content: "\f4a7"; }
+
+.sys-icon.comment-alt-plus:before, .fa-comment-alt-plus:before {
+  content: "\f4a8"; }
+
+.sys-icon.comment-alt-slash:before, .fa-comment-alt-slash:before {
+  content: "\f4a9"; }
+
+.sys-icon.comment-alt-smile:before, .fa-comment-alt-smile:before {
+  content: "\f4aa"; }
+
+.sys-icon.comment-alt-times:before, .fa-comment-alt-times:before {
+  content: "\f4ab"; }
+
+.sys-icon.comment-check:before, .fa-comment-check:before {
+  content: "\f4ac"; }
+
+.sys-icon.comment-dots:before, .fa-comment-dots:before {
+  content: "\f4ad"; }
+
+.sys-icon.comment-edit:before, .fa-comment-edit:before {
+  content: "\f4ae"; }
+
+.sys-icon.comment-exclamation:before, .fa-comment-exclamation:before {
+  content: "\f4af"; }
+
+.sys-icon.comment-lines:before, .fa-comment-lines:before {
+  content: "\f4b0"; }
+
+.sys-icon.comment-minus:before, .fa-comment-minus:before {
+  content: "\f4b1"; }
+
+.sys-icon.comment-plus:before, .fa-comment-plus:before {
+  content: "\f4b2"; }
+
+.sys-icon.comment-slash:before, .fa-comment-slash:before {
+  content: "\f4b3"; }
+
+.sys-icon.comment-smile:before, .fa-comment-smile:before {
+  content: "\f4b4"; }
+
+.sys-icon.comment-times:before, .fa-comment-times:before {
+  content: "\f4b5"; }
+
+.sys-icon.comments:before, .fa-comments:before {
+  content: "\f086"; }
+
+.sys-icon.comments-alt:before, .fa-comments-alt:before {
+  content: "\f4b6"; }
+
+.sys-icon.compact-disc:before, .fa-compact-disc:before {
+  content: "\f51f"; }
+
+.sys-icon.compass:before, .fa-compass:before {
+  content: "\f14e"; }
+
+.sys-icon.compress:before, .fa-compress:before {
+  content: "\f066"; }
+
+.sys-icon.compress-alt:before, .fa-compress-alt:before {
+  content: "\f422"; }
+
+.sys-icon.compress-wide:before, .fa-compress-wide:before {
+  content: "\f326"; }
+
+.sys-icon.connectdevelop:before, .fa-connectdevelop:before {
+  content: "\f20e"; }
+
+.sys-icon.container-storage:before, .fa-container-storage:before {
+  content: "\f4b7"; }
+
+.sys-icon.contao:before, .fa-contao:before {
+  content: "\f26d"; }
+
+.sys-icon.conveyor-belt:before, .fa-conveyor-belt:before {
+  content: "\f46e"; }
+
+.sys-icon.conveyor-belt-alt:before, .fa-conveyor-belt-alt:before {
+  content: "\f46f"; }
+
+.sys-icon.copy:before, .fa-copy:before {
+  content: "\f0c5"; }
+
+.sys-icon.copyright:before, .fa-copyright:before {
+  content: "\f1f9"; }
+
+.sys-icon.couch:before, .fa-couch:before {
+  content: "\f4b8"; }
+
+.sys-icon.cpanel:before, .fa-cpanel:before {
+  content: "\f388"; }
+
+.sys-icon.creative-commons:before, .fa-creative-commons:before {
+  content: "\f25e"; }
+
+.sys-icon.creative-commons-by:before, .fa-creative-commons-by:before {
+  content: "\f4e7"; }
+
+.sys-icon.creative-commons-nc:before, .fa-creative-commons-nc:before {
+  content: "\f4e8"; }
+
+.sys-icon.creative-commons-nc-eu:before, .fa-creative-commons-nc-eu:before {
+  content: "\f4e9"; }
+
+.sys-icon.creative-commons-nc-jp:before, .fa-creative-commons-nc-jp:before {
+  content: "\f4ea"; }
+
+.sys-icon.creative-commons-nd:before, .fa-creative-commons-nd:before {
+  content: "\f4eb"; }
+
+.sys-icon.creative-commons-pd:before, .fa-creative-commons-pd:before {
+  content: "\f4ec"; }
+
+.sys-icon.creative-commons-pd-alt:before, .fa-creative-commons-pd-alt:before {
+  content: "\f4ed"; }
+
+.sys-icon.creative-commons-remix:before, .fa-creative-commons-remix:before {
+  content: "\f4ee"; }
+
+.sys-icon.creative-commons-sa:before, .fa-creative-commons-sa:before {
+  content: "\f4ef"; }
+
+.sys-icon.creative-commons-sampling:before, .fa-creative-commons-sampling:before {
+  content: "\f4f0"; }
+
+.sys-icon.creative-commons-sampling-plus:before, .fa-creative-commons-sampling-plus:before {
+  content: "\f4f1"; }
+
+.sys-icon.creative-commons-share:before, .fa-creative-commons-share:before {
+  content: "\f4f2"; }
+
+.sys-icon.creative-commons-zero:before, .fa-creative-commons-zero:before {
+  content: "\f4f3"; }
+
+.sys-icon.credit-card:before, .fa-credit-card:before {
+  content: "\f09d"; }
+
+.sys-icon.credit-card-blank:before, .fa-credit-card-blank:before {
+  content: "\f389"; }
+
+.sys-icon.credit-card-front:before, .fa-credit-card-front:before {
+  content: "\f38a"; }
+
+.sys-icon.cricket:before, .fa-cricket:before {
+  content: "\f449"; }
+
+.sys-icon.crop:before, .fa-crop:before {
+  content: "\f125"; }
+
+.sys-icon.crosshairs:before, .fa-crosshairs:before {
+  content: "\f05b"; }
+
+.sys-icon.crow:before, .fa-crow:before {
+  content: "\f520"; }
+
+.sys-icon.crown:before, .fa-crown:before {
+  content: "\f521"; }
+
+.sys-icon.css3:before, .fa-css3:before {
+  content: "\f13c"; }
+
+.sys-icon.css3-alt:before, .fa-css3-alt:before {
+  content: "\f38b"; }
+
+.sys-icon.cube:before, .fa-cube:before {
+  content: "\f1b2"; }
+
+.sys-icon.cubes:before, .fa-cubes:before {
+  content: "\f1b3"; }
+
+.sys-icon.curling:before, .fa-curling:before {
+  content: "\f44a"; }
+
+.sys-icon.cut:before, .fa-cut:before {
+  content: "\f0c4"; }
+
+.sys-icon.cuttlefish:before, .fa-cuttlefish:before {
+  content: "\f38c"; }
+
+.sys-icon.d-and-d:before, .fa-d-and-d:before {
+  content: "\f38d"; }
+
+.sys-icon.dashcube:before, .fa-dashcube:before {
+  content: "\f210"; }
+
+.sys-icon.database:before, .fa-database:before {
+  content: "\f1c0"; }
+
+.sys-icon.deaf:before, .fa-deaf:before {
+  content: "\f2a4"; }
+
+.sys-icon.delicious:before, .fa-delicious:before {
+  content: "\f1a5"; }
+
+.sys-icon.deploydog:before, .fa-deploydog:before {
+  content: "\f38e"; }
+
+.sys-icon.deskpro:before, .fa-deskpro:before {
+  content: "\f38f"; }
+
+.sys-icon.desktop:before, .fa-desktop:before {
+  content: "\f108"; }
+
+.sys-icon.desktop-alt:before, .fa-desktop-alt:before {
+  content: "\f390"; }
+
+.sys-icon.deviantart:before, .fa-deviantart:before {
+  content: "\f1bd"; }
+
+.sys-icon.diagnoses:before, .fa-diagnoses:before {
+  content: "\f470"; }
+
+.sys-icon.diamond:before, .fa-diamond:before {
+  content: "\f219"; }
+
+.sys-icon.dice:before, .fa-dice:before {
+  content: "\f522"; }
+
+.sys-icon.dice-five:before, .fa-dice-five:before {
+  content: "\f523"; }
+
+.sys-icon.dice-four:before, .fa-dice-four:before {
+  content: "\f524"; }
+
+.sys-icon.dice-one:before, .fa-dice-one:before {
+  content: "\f525"; }
+
+.sys-icon.dice-six:before, .fa-dice-six:before {
+  content: "\f526"; }
+
+.sys-icon.dice-three:before, .fa-dice-three:before {
+  content: "\f527"; }
+
+.sys-icon.dice-two:before, .fa-dice-two:before {
+  content: "\f528"; }
+
+.sys-icon.digg:before, .fa-digg:before {
+  content: "\f1a6"; }
+
+.sys-icon.digital-ocean:before, .fa-digital-ocean:before {
+  content: "\f391"; }
+
+.sys-icon.discord:before, .fa-discord:before {
+  content: "\f392"; }
+
+.sys-icon.discourse:before, .fa-discourse:before {
+  content: "\f393"; }
+
+.sys-icon.divide:before, .fa-divide:before {
+  content: "\f529"; }
+
+.sys-icon.dna:before, .fa-dna:before {
+  content: "\f471"; }
+
+.sys-icon.dochub:before, .fa-dochub:before {
+  content: "\f394"; }
+
+.sys-icon.docker:before, .fa-docker:before {
+  content: "\f395"; }
+
+.sys-icon.dollar-sign:before, .fa-dollar-sign:before {
+  content: "\f155"; }
+
+.sys-icon.dolly:before, .fa-dolly:before {
+  content: "\f472"; }
+
+.sys-icon.dolly-empty:before, .fa-dolly-empty:before {
+  content: "\f473"; }
+
+.sys-icon.dolly-flatbed:before, .fa-dolly-flatbed:before {
+  content: "\f474"; }
+
+.sys-icon.dolly-flatbed-alt:before, .fa-dolly-flatbed-alt:before {
+  content: "\f475"; }
+
+.sys-icon.dolly-flatbed-empty:before, .fa-dolly-flatbed-empty:before {
+  content: "\f476"; }
+
+.sys-icon.donate:before, .fa-donate:before {
+  content: "\f4b9"; }
+
+.sys-icon.door-closed:before, .fa-door-closed:before {
+  content: "\f52a"; }
+
+.sys-icon.door-open:before, .fa-door-open:before {
+  content: "\f52b"; }
+
+.sys-icon.dot-circle:before, .fa-dot-circle:before {
+  content: "\f192"; }
+
+.sys-icon.dove:before, .fa-dove:before {
+  content: "\f4ba"; }
+
+.sys-icon.download:before, .fa-download:before {
+  content: "\f019"; }
+
+.sys-icon.draft2digital:before, .fa-draft2digital:before {
+  content: "\f396"; }
+
+.sys-icon.dribbble:before, .fa-dribbble:before {
+  content: "\f17d"; }
+
+.sys-icon.dribbble-square:before, .fa-dribbble-square:before {
+  content: "\f397"; }
+
+.sys-icon.dropbox:before, .fa-dropbox:before {
+  content: "\f16b"; }
+
+.sys-icon.drupal:before, .fa-drupal:before {
+  content: "\f1a9"; }
+
+.sys-icon.dumbbell:before, .fa-dumbbell:before {
+  content: "\f44b"; }
+
+.sys-icon.dyalog:before, .fa-dyalog:before {
+  content: "\f399"; }
+
+.sys-icon.earlybirds:before, .fa-earlybirds:before {
+  content: "\f39a"; }
+
+.sys-icon.ebay:before, .fa-ebay:before {
+  content: "\f4f4"; }
+
+.sys-icon.edge:before, .fa-edge:before {
+  content: "\f282"; }
+
+.sys-icon.edit:before, .fa-edit:before {
+  content: "\f044"; }
+
+.sys-icon.eject:before, .fa-eject:before {
+  content: "\f052"; }
+
+.sys-icon.elementor:before, .fa-elementor:before {
+  content: "\f430"; }
+
+.sys-icon.ellipsis-h:before, .fa-ellipsis-h:before {
+  content: "\f141"; }
+
+.sys-icon.ellipsis-h-alt:before, .fa-ellipsis-h-alt:before {
+  content: "\f39b"; }
+
+.sys-icon.ellipsis-v:before, .fa-ellipsis-v:before {
+  content: "\f142"; }
+
+.sys-icon.ellipsis-v-alt:before, .fa-ellipsis-v-alt:before {
+  content: "\f39c"; }
+
+.sys-icon.ember:before, .fa-ember:before {
+  content: "\f423"; }
+
+.sys-icon.empire:before, .fa-empire:before {
+  content: "\f1d1"; }
+
+.sys-icon.envelope:before, .fa-envelope:before {
+  content: "\f0e0"; }
+
+.sys-icon.envelope-open:before, .fa-envelope-open:before {
+  content: "\f2b6"; }
+
+.sys-icon.envelope-square:before, .fa-envelope-square:before {
+  content: "\f199"; }
+
+.sys-icon.envira:before, .fa-envira:before {
+  content: "\f299"; }
+
+.sys-icon.equals:before, .fa-equals:before {
+  content: "\f52c"; }
+
+.sys-icon.eraser:before, .fa-eraser:before {
+  content: "\f12d"; }
+
+.sys-icon.erlang:before, .fa-erlang:before {
+  content: "\f39d"; }
+
+.sys-icon.ethereum:before, .fa-ethereum:before {
+  content: "\f42e"; }
+
+.sys-icon.etsy:before, .fa-etsy:before {
+  content: "\f2d7"; }
+
+.sys-icon.euro-sign:before, .fa-euro-sign:before {
+  content: "\f153"; }
+
+.sys-icon.exchange:before, .fa-exchange:before {
+  content: "\f0ec"; }
+
+.sys-icon.exchange-alt:before, .fa-exchange-alt:before {
+  content: "\f362"; }
+
+.sys-icon.exclamation:before, .fa-exclamation:before {
+  content: "\f12a"; }
+
+.sys-icon.exclamation-circle:before, .fa-exclamation-circle:before {
+  content: "\f06a"; }
+
+.sys-icon.exclamation-square:before, .fa-exclamation-square:before {
+  content: "\f321"; }
+
+.sys-icon.exclamation-triangle:before, .fa-exclamation-triangle:before {
+  content: "\f071"; }
+
+.sys-icon.expand:before, .fa-expand:before {
+  content: "\f065"; }
+
+.sys-icon.expand-alt:before, .fa-expand-alt:before {
+  content: "\f424"; }
+
+.sys-icon.expand-arrows:before, .fa-expand-arrows:before {
+  content: "\f31d"; }
+
+.sys-icon.expand-arrows-alt:before, .fa-expand-arrows-alt:before {
+  content: "\f31e"; }
+
+.sys-icon.expand-wide:before, .fa-expand-wide:before {
+  content: "\f320"; }
+
+.sys-icon.expeditedssl:before, .fa-expeditedssl:before {
+  content: "\f23e"; }
+
+.sys-icon.external-link:before, .fa-external-link:before {
+  content: "\f08e"; }
+
+.sys-icon.external-link-alt:before, .fa-external-link-alt:before {
+  content: "\f35d"; }
+
+.sys-icon.external-link-square:before, .fa-external-link-square:before {
+  content: "\f14c"; }
+
+.sys-icon.external-link-square-alt:before, .fa-external-link-square-alt:before {
+  content: "\f360"; }
+
+.sys-icon.eye:before, .fa-eye:before {
+  content: "\f06e"; }
+
+.sys-icon.eye-dropper:before, .fa-eye-dropper:before {
+  content: "\f1fb"; }
+
+.sys-icon.eye-slash:before, .fa-eye-slash:before {
+  content: "\f070"; }
+
+.sys-icon.facebook:before, .fa-facebook:before {
+  content: "\f09a"; }
+
+.sys-icon.facebook-f:before, .fa-facebook-f:before {
+  content: "\f39e"; }
+
+.sys-icon.facebook-messenger:before, .fa-facebook-messenger:before {
+  content: "\f39f"; }
+
+.sys-icon.facebook-square:before, .fa-facebook-square:before {
+  content: "\f082"; }
+
+.sys-icon.fast-backward:before, .fa-fast-backward:before {
+  content: "\f049"; }
+
+.sys-icon.fast-forward:before, .fa-fast-forward:before {
+  content: "\f050"; }
+
+.sys-icon.fax:before, .fa-fax:before {
+  content: "\f1ac"; }
+
+.sys-icon.feather:before, .fa-feather:before {
+  content: "\f52d"; }
+
+.sys-icon.female:before, .fa-female:before {
+  content: "\f182"; }
+
+.sys-icon.field-hockey:before, .fa-field-hockey:before {
+  content: "\f44c"; }
+
+.sys-icon.fighter-jet:before, .fa-fighter-jet:before {
+  content: "\f0fb"; }
+
+.sys-icon.file:before, .fa-file:before {
+  content: "\f15b"; }
+
+.sys-icon.file-alt:before, .fa-file-alt:before {
+  content: "\f15c"; }
+
+.sys-icon.file-archive:before, .fa-file-archive:before {
+  content: "\f1c6"; }
+
+.sys-icon.file-audio:before, .fa-file-audio:before {
+  content: "\f1c7"; }
+
+.sys-icon.file-check:before, .fa-file-check:before {
+  content: "\f316"; }
+
+.sys-icon.file-code:before, .fa-file-code:before {
+  content: "\f1c9"; }
+
+.sys-icon.file-edit:before, .fa-file-edit:before {
+  content: "\f31c"; }
+
+.sys-icon.file-excel:before, .fa-file-excel:before {
+  content: "\f1c3"; }
+
+.sys-icon.file-exclamation:before, .fa-file-exclamation:before {
+  content: "\f31a"; }
+
+.sys-icon.file-image:before, .fa-file-image:before {
+  content: "\f1c5"; }
+
+.sys-icon.file-medical:before, .fa-file-medical:before {
+  content: "\f477"; }
+
+.sys-icon.file-medical-alt:before, .fa-file-medical-alt:before {
+  content: "\f478"; }
+
+.sys-icon.file-minus:before, .fa-file-minus:before {
+  content: "\f318"; }
+
+.sys-icon.file-pdf:before, .fa-file-pdf:before {
+  content: "\f1c1"; }
+
+.sys-icon.file-plus:before, .fa-file-plus:before {
+  content: "\f319"; }
+
+.sys-icon.file-powerpoint:before, .fa-file-powerpoint:before {
+  content: "\f1c4"; }
+
+.sys-icon.file-times:before, .fa-file-times:before {
+  content: "\f317"; }
+
+.sys-icon.file-video:before, .fa-file-video:before {
+  content: "\f1c8"; }
+
+.sys-icon.file-word:before, .fa-file-word:before {
+  content: "\f1c2"; }
+
+.sys-icon.film:before, .fa-film:before {
+  content: "\f008"; }
+
+.sys-icon.film-alt:before, .fa-film-alt:before {
+  content: "\f3a0"; }
+
+.sys-icon.filter:before, .fa-filter:before {
+  content: "\f0b0"; }
+
+.sys-icon.fire:before, .fa-fire:before {
+  content: "\f06d"; }
+
+.sys-icon.fire-extinguisher:before, .fa-fire-extinguisher:before {
+  content: "\f134"; }
+
+.sys-icon.firefox:before, .fa-firefox:before {
+  content: "\f269"; }
+
+.sys-icon.first-aid:before, .fa-first-aid:before {
+  content: "\f479"; }
+
+.sys-icon.first-order:before, .fa-first-order:before {
+  content: "\f2b0"; }
+
+.sys-icon.first-order-alt:before, .fa-first-order-alt:before {
+  content: "\f50a"; }
+
+.sys-icon.firstdraft:before, .fa-firstdraft:before {
+  content: "\f3a1"; }
+
+.sys-icon.flag:before, .fa-flag:before {
+  content: "\f024"; }
+
+.sys-icon.flag-checkered:before, .fa-flag-checkered:before {
+  content: "\f11e"; }
+
+.sys-icon.flask:before, .fa-flask:before {
+  content: "\f0c3"; }
+
+.sys-icon.flickr:before, .fa-flickr:before {
+  content: "\f16e"; }
+
+.sys-icon.flipboard:before, .fa-flipboard:before {
+  content: "\f44d"; }
+
+.sys-icon.fly:before, .fa-fly:before {
+  content: "\f417"; }
+
+.sys-icon.folder:before, .fa-folder:before {
+  content: "\f07b"; }
+
+.sys-icon.folder-open:before, .fa-folder-open:before {
+  content: "\f07c"; }
+
+.sys-icon.font:before, .fa-font:before {
+  content: "\f031"; }
+
+.sys-icon.font-awesome:before, .fa-font-awesome:before {
+  content: "\f2b4"; }
+
+.sys-icon.font-awesome-alt:before, .fa-font-awesome-alt:before {
+  content: "\f35c"; }
+
+.sys-icon.font-awesome-flag:before, .fa-font-awesome-flag:before {
+  content: "\f425"; }
+
+.sys-icon.font-awesome-logo-full:before, .fa-font-awesome-logo-full:before {
+  content: "\f4e6"; }
+
+.sys-icon.fonticons:before, .fa-fonticons:before {
+  content: "\f280"; }
+
+.sys-icon.fonticons-fi:before, .fa-fonticons-fi:before {
+  content: "\f3a2"; }
+
+.sys-icon.football-ball:before, .fa-football-ball:before {
+  content: "\f44e"; }
+
+.sys-icon.football-helmet:before, .fa-football-helmet:before {
+  content: "\f44f"; }
+
+.sys-icon.forklift:before, .fa-forklift:before {
+  content: "\f47a"; }
+
+.sys-icon.fort-awesome:before, .fa-fort-awesome:before {
+  content: "\f286"; }
+
+.sys-icon.fort-awesome-alt:before, .fa-fort-awesome-alt:before {
+  content: "\f3a3"; }
+
+.sys-icon.forumbee:before, .fa-forumbee:before {
+  content: "\f211"; }
+
+.sys-icon.forward:before, .fa-forward:before {
+  content: "\f04e"; }
+
+.sys-icon.foursquare:before, .fa-foursquare:before {
+  content: "\f180"; }
+
+.sys-icon.fragile:before, .fa-fragile:before {
+  content: "\f4bb"; }
+
+.sys-icon.free-code-camp:before, .fa-free-code-camp:before {
+  content: "\f2c5"; }
+
+.sys-icon.freebsd:before, .fa-freebsd:before {
+  content: "\f3a4"; }
+
+.sys-icon.frog:before, .fa-frog:before {
+  content: "\f52e"; }
+
+.sys-icon.frown:before, .fa-frown:before {
+  content: "\f119"; }
+
+.sys-icon.fulcrum:before, .fa-fulcrum:before {
+  content: "\f50b"; }
+
+.sys-icon.futbol:before, .fa-futbol:before {
+  content: "\f1e3"; }
+
+.sys-icon.galactic-republic:before, .fa-galactic-republic:before {
+  content: "\f50c"; }
+
+.sys-icon.galactic-senate:before, .fa-galactic-senate:before {
+  content: "\f50d"; }
+
+.sys-icon.gamepad:before, .fa-gamepad:before {
+  content: "\f11b"; }
+
+.sys-icon.gas-pump:before, .fa-gas-pump:before {
+  content: "\f52f"; }
+
+.sys-icon.gavel:before, .fa-gavel:before {
+  content: "\f0e3"; }
+
+.sys-icon.gem:before, .fa-gem:before {
+  content: "\f3a5"; }
+
+.sys-icon.genderless:before, .fa-genderless:before {
+  content: "\f22d"; }
+
+.sys-icon.get-pocket:before, .fa-get-pocket:before {
+  content: "\f265"; }
+
+.sys-icon.gg:before, .fa-gg:before {
+  content: "\f260"; }
+
+.sys-icon.gg-circle:before, .fa-gg-circle:before {
+  content: "\f261"; }
+
+.sys-icon.gift:before, .fa-gift:before {
+  content: "\f06b"; }
+
+.sys-icon.git:before, .fa-git:before {
+  content: "\f1d3"; }
+
+.sys-icon.git-square:before, .fa-git-square:before {
+  content: "\f1d2"; }
+
+.sys-icon.github:before, .fa-github:before {
+  content: "\f09b"; }
+
+.sys-icon.github-alt:before, .fa-github-alt:before {
+  content: "\f113"; }
+
+.sys-icon.github-square:before, .fa-github-square:before {
+  content: "\f092"; }
+
+.sys-icon.gitkraken:before, .fa-gitkraken:before {
+  content: "\f3a6"; }
+
+.sys-icon.gitlab:before, .fa-gitlab:before {
+  content: "\f296"; }
+
+.sys-icon.gitter:before, .fa-gitter:before {
+  content: "\f426"; }
+
+.sys-icon.glass-martini:before, .fa-glass-martini:before {
+  content: "\f000"; }
+
+.sys-icon.glasses:before, .fa-glasses:before {
+  content: "\f530"; }
+
+.sys-icon.glide:before, .fa-glide:before {
+  content: "\f2a5"; }
+
+.sys-icon.glide-g:before, .fa-glide-g:before {
+  content: "\f2a6"; }
+
+.sys-icon.globe:before, .fa-globe:before {
+  content: "\f0ac"; }
+
+.sys-icon.gofore:before, .fa-gofore:before {
+  content: "\f3a7"; }
+
+.sys-icon.golf-ball:before, .fa-golf-ball:before {
+  content: "\f450"; }
+
+.sys-icon.golf-club:before, .fa-golf-club:before {
+  content: "\f451"; }
+
+.sys-icon.goodreads:before, .fa-goodreads:before {
+  content: "\f3a8"; }
+
+.sys-icon.goodreads-g:before, .fa-goodreads-g:before {
+  content: "\f3a9"; }
+
+.sys-icon.google:before, .fa-google:before {
+  content: "\f1a0"; }
+
+.sys-icon.google-drive:before, .fa-google-drive:before {
+  content: "\f3aa"; }
+
+.sys-icon.google-play:before, .fa-google-play:before {
+  content: "\f3ab"; }
+
+.sys-icon.google-plus:before, .fa-google-plus:before {
+  content: "\f2b3"; }
+
+.sys-icon.google-plus-g:before, .fa-google-plus-g:before {
+  content: "\f0d5"; }
+
+.sys-icon.google-plus-square:before, .fa-google-plus-square:before {
+  content: "\f0d4"; }
+
+.sys-icon.google-wallet:before, .fa-google-wallet:before {
+  content: "\f1ee"; }
+
+.sys-icon.graduation-cap:before, .fa-graduation-cap:before {
+  content: "\f19d"; }
+
+.sys-icon.gratipay:before, .fa-gratipay:before {
+  content: "\f184"; }
+
+.sys-icon.grav:before, .fa-grav:before {
+  content: "\f2d6"; }
+
+.sys-icon.greater-than:before, .fa-greater-than:before {
+  content: "\f531"; }
+
+.sys-icon.greater-than-equal:before, .fa-greater-than-equal:before {
+  content: "\f532"; }
+
+.sys-icon.gripfire:before, .fa-gripfire:before {
+  content: "\f3ac"; }
+
+.sys-icon.grunt:before, .fa-grunt:before {
+  content: "\f3ad"; }
+
+.sys-icon.gulp:before, .fa-gulp:before {
+  content: "\f3ae"; }
+
+.sys-icon.h-square:before, .fa-h-square:before {
+  content: "\f0fd"; }
+
+.sys-icon.h1:before, .fa-h1:before {
+  content: "\f313"; }
+
+.sys-icon.h2:before, .fa-h2:before {
+  content: "\f314"; }
+
+.sys-icon.h3:before, .fa-h3:before {
+  content: "\f315"; }
+
+.sys-icon.hacker-news:before, .fa-hacker-news:before {
+  content: "\f1d4"; }
+
+.sys-icon.hacker-news-square:before, .fa-hacker-news-square:before {
+  content: "\f3af"; }
+
+.sys-icon.hand-heart:before, .fa-hand-heart:before {
+  content: "\f4bc"; }
+
+.sys-icon.hand-holding:before, .fa-hand-holding:before {
+  content: "\f4bd"; }
+
+.sys-icon.hand-holding-box:before, .fa-hand-holding-box:before {
+  content: "\f47b"; }
+
+.sys-icon.hand-holding-heart:before, .fa-hand-holding-heart:before {
+  content: "\f4be"; }
+
+.sys-icon.hand-holding-seedling:before, .fa-hand-holding-seedling:before {
+  content: "\f4bf"; }
+
+.sys-icon.hand-holding-usd:before, .fa-hand-holding-usd:before {
+  content: "\f4c0"; }
+
+.sys-icon.hand-holding-water:before, .fa-hand-holding-water:before {
+  content: "\f4c1"; }
+
+.sys-icon.hand-lizard:before, .fa-hand-lizard:before {
+  content: "\f258"; }
+
+.sys-icon.hand-paper:before, .fa-hand-paper:before {
+  content: "\f256"; }
+
+.sys-icon.hand-peace:before, .fa-hand-peace:before {
+  content: "\f25b"; }
+
+.sys-icon.hand-point-down:before, .fa-hand-point-down:before {
+  content: "\f0a7"; }
+
+.sys-icon.hand-point-left:before, .fa-hand-point-left:before {
+  content: "\f0a5"; }
+
+.sys-icon.hand-point-right:before, .fa-hand-point-right:before {
+  content: "\f0a4"; }
+
+.sys-icon.hand-point-up:before, .fa-hand-point-up:before {
+  content: "\f0a6"; }
+
+.sys-icon.hand-pointer:before, .fa-hand-pointer:before {
+  content: "\f25a"; }
+
+.sys-icon.hand-receiving:before, .fa-hand-receiving:before {
+  content: "\f47c"; }
+
+.sys-icon.hand-rock:before, .fa-hand-rock:before {
+  content: "\f255"; }
+
+.sys-icon.hand-scissors:before, .fa-hand-scissors:before {
+  content: "\f257"; }
+
+.sys-icon.hand-spock:before, .fa-hand-spock:before {
+  content: "\f259"; }
+
+.sys-icon.hands:before, .fa-hands:before {
+  content: "\f4c2"; }
+
+.sys-icon.hands-heart:before, .fa-hands-heart:before {
+  content: "\f4c3"; }
+
+.sys-icon.hands-helping:before, .fa-hands-helping:before {
+  content: "\f4c4"; }
+
+.sys-icon.hands-usd:before, .fa-hands-usd:before {
+  content: "\f4c5"; }
+
+.sys-icon.handshake:before, .fa-handshake:before {
+  content: "\f2b5"; }
+
+.sys-icon.handshake-alt:before, .fa-handshake-alt:before {
+  content: "\f4c6"; }
+
+.sys-icon.hashtag:before, .fa-hashtag:before {
+  content: "\f292"; }
+
+.sys-icon.hdd:before, .fa-hdd:before {
+  content: "\f0a0"; }
+
+.sys-icon.heading:before, .fa-heading:before {
+  content: "\f1dc"; }
+
+.sys-icon.headphones:before, .fa-headphones:before {
+  content: "\f025"; }
+
+.sys-icon.heart:before, .fa-heart:before {
+  content: "\f004"; }
+
+.sys-icon.heart-circle:before, .fa-heart-circle:before {
+  content: "\f4c7"; }
+
+.sys-icon.heart-square:before, .fa-heart-square:before {
+  content: "\f4c8"; }
+
+.sys-icon.heartbeat:before, .fa-heartbeat:before {
+  content: "\f21e"; }
+
+.sys-icon.helicopter:before, .fa-helicopter:before {
+  content: "\f533"; }
+
+.sys-icon.hexagon:before, .fa-hexagon:before {
+  content: "\f312"; }
+
+.sys-icon.hips:before, .fa-hips:before {
+  content: "\f452"; }
+
+.sys-icon.hire-a-helper:before, .fa-hire-a-helper:before {
+  content: "\f3b0"; }
+
+.sys-icon.history:before, .fa-history:before {
+  content: "\f1da"; }
+
+.sys-icon.hockey-puck:before, .fa-hockey-puck:before {
+  content: "\f453"; }
+
+.sys-icon.hockey-sticks:before, .fa-hockey-sticks:before {
+  content: "\f454"; }
+
+.sys-icon.home:before, .fa-home:before {
+  content: "\f015"; }
+
+.sys-icon.home-heart:before, .fa-home-heart:before {
+  content: "\f4c9"; }
+
+.sys-icon.hooli:before, .fa-hooli:before {
+  content: "\f427"; }
+
+.sys-icon.hospital:before, .fa-hospital:before {
+  content: "\f0f8"; }
+
+.sys-icon.hospital-alt:before, .fa-hospital-alt:before {
+  content: "\f47d"; }
+
+.sys-icon.hospital-symbol:before, .fa-hospital-symbol:before {
+  content: "\f47e"; }
+
+.sys-icon.hotjar:before, .fa-hotjar:before {
+  content: "\f3b1"; }
+
+.sys-icon.hourglass:before, .fa-hourglass:before {
+  content: "\f254"; }
+
+.sys-icon.hourglass-end:before, .fa-hourglass-end:before {
+  content: "\f253"; }
+
+.sys-icon.hourglass-half:before, .fa-hourglass-half:before {
+  content: "\f252"; }
+
+.sys-icon.hourglass-start:before, .fa-hourglass-start:before {
+  content: "\f251"; }
+
+.sys-icon.houzz:before, .fa-houzz:before {
+  content: "\f27c"; }
+
+.sys-icon.html5:before, .fa-html5:before {
+  content: "\f13b"; }
+
+.sys-icon.hubspot:before, .fa-hubspot:before {
+  content: "\f3b2"; }
+
+.sys-icon.i-cursor:before, .fa-i-cursor:before {
+  content: "\f246"; }
+
+.sys-icon.id-badge:before, .fa-id-badge:before {
+  content: "\f2c1"; }
+
+.sys-icon.id-card:before, .fa-id-card:before {
+  content: "\f2c2"; }
+
+.sys-icon.id-card-alt:before, .fa-id-card-alt:before {
+  content: "\f47f"; }
+
+.sys-icon.image:before, .fa-image:before {
+  content: "\f03e"; }
+
+.sys-icon.images:before, .fa-images:before {
+  content: "\f302"; }
+
+.sys-icon.imdb:before, .fa-imdb:before {
+  content: "\f2d8"; }
+
+.sys-icon.inbox:before, .fa-inbox:before {
+  content: "\f01c"; }
+
+.sys-icon.inbox-in:before, .fa-inbox-in:before {
+  content: "\f310"; }
+
+.sys-icon.inbox-out:before, .fa-inbox-out:before {
+  content: "\f311"; }
+
+.sys-icon.indent:before, .fa-indent:before {
+  content: "\f03c"; }
+
+.sys-icon.industry:before, .fa-industry:before {
+  content: "\f275"; }
+
+.sys-icon.industry-alt:before, .fa-industry-alt:before {
+  content: "\f3b3"; }
+
+.sys-icon.infinity:before, .fa-infinity:before {
+  content: "\f534"; }
+
+.sys-icon.info:before, .fa-info:before {
+  content: "\f129"; }
+
+.sys-icon.info-circle:before, .fa-info-circle:before {
+  content: "\f05a"; }
+
+.sys-icon.info-square:before, .fa-info-square:before {
+  content: "\f30f"; }
+
+.sys-icon.instagram:before, .fa-instagram:before {
+  content: "\f16d"; }
+
+.sys-icon.internet-explorer:before, .fa-internet-explorer:before {
+  content: "\f26b"; }
+
+.sys-icon.inventory:before, .fa-inventory:before {
+  content: "\f480"; }
+
+.sys-icon.ioxhost:before, .fa-ioxhost:before {
+  content: "\f208"; }
+
+.sys-icon.italic:before, .fa-italic:before {
+  content: "\f033"; }
+
+.sys-icon.itunes:before, .fa-itunes:before {
+  content: "\f3b4"; }
+
+.sys-icon.itunes-note:before, .fa-itunes-note:before {
+  content: "\f3b5"; }
+
+.sys-icon.jack-o-lantern:before, .fa-jack-o-lantern:before {
+  content: "\f30e"; }
+
+.sys-icon.java:before, .fa-java:before {
+  content: "\f4e4"; }
+
+.sys-icon.jedi-order:before, .fa-jedi-order:before {
+  content: "\f50e"; }
+
+.sys-icon.jenkins:before, .fa-jenkins:before {
+  content: "\f3b6"; }
+
+.sys-icon.joget:before, .fa-joget:before {
+  content: "\f3b7"; }
+
+.sys-icon.joomla:before, .fa-joomla:before {
+  content: "\f1aa"; }
+
+.sys-icon.js:before, .fa-js:before {
+  content: "\f3b8"; }
+
+.sys-icon.js-square:before, .fa-js-square:before {
+  content: "\f3b9"; }
+
+.sys-icon.jsfiddle:before, .fa-jsfiddle:before {
+  content: "\f1cc"; }
+
+.sys-icon.key:before, .fa-key:before {
+  content: "\f084"; }
+
+.sys-icon.keybase:before, .fa-keybase:before {
+  content: "\f4f5"; }
+
+.sys-icon.keyboard:before, .fa-keyboard:before {
+  content: "\f11c"; }
+
+.sys-icon.keycdn:before, .fa-keycdn:before {
+  content: "\f3ba"; }
+
+.sys-icon.kickstarter:before, .fa-kickstarter:before {
+  content: "\f3bb"; }
+
+.sys-icon.kickstarter-k:before, .fa-kickstarter-k:before {
+  content: "\f3bc"; }
+
+.sys-icon.kiwi-bird:before, .fa-kiwi-bird:before {
+  content: "\f535"; }
+
+.sys-icon.korvue:before, .fa-korvue:before {
+  content: "\f42f"; }
+
+.sys-icon.lamp:before, .fa-lamp:before {
+  content: "\f4ca"; }
+
+.sys-icon.language:before, .fa-language:before {
+  content: "\f1ab"; }
+
+.sys-icon.laptop:before, .fa-laptop:before {
+  content: "\f109"; }
+
+.sys-icon.laravel:before, .fa-laravel:before {
+  content: "\f3bd"; }
+
+.sys-icon.lastfm:before, .fa-lastfm:before {
+  content: "\f202"; }
+
+.sys-icon.lastfm-square:before, .fa-lastfm-square:before {
+  content: "\f203"; }
+
+.sys-icon.leaf:before, .fa-leaf:before {
+  content: "\f06c"; }
+
+.sys-icon.leaf-heart:before, .fa-leaf-heart:before {
+  content: "\f4cb"; }
+
+.sys-icon.leanpub:before, .fa-leanpub:before {
+  content: "\f212"; }
+
+.sys-icon.lemon:before, .fa-lemon:before {
+  content: "\f094"; }
+
+.sys-icon.less:before, .fa-less:before {
+  content: "\f41d"; }
+
+.sys-icon.less-than:before, .fa-less-than:before {
+  content: "\f536"; }
+
+.sys-icon.less-than-equal:before, .fa-less-than-equal:before {
+  content: "\f537"; }
+
+.sys-icon.level-down:before, .fa-level-down:before {
+  content: "\f149"; }
+
+.sys-icon.level-down-alt:before, .fa-level-down-alt:before {
+  content: "\f3be"; }
+
+.sys-icon.level-up:before, .fa-level-up:before {
+  content: "\f148"; }
+
+.sys-icon.level-up-alt:before, .fa-level-up-alt:before {
+  content: "\f3bf"; }
+
+.sys-icon.life-ring:before, .fa-life-ring:before {
+  content: "\f1cd"; }
+
+.sys-icon.lightbulb:before, .fa-lightbulb:before {
+  content: "\f0eb"; }
+
+.sys-icon.line:before, .fa-line:before {
+  content: "\f3c0"; }
+
+.sys-icon.link:before, .fa-link:before {
+  content: "\f0c1"; }
+
+.sys-icon.linkedin:before, .fa-linkedin:before {
+  content: "\f08c"; }
+
+.sys-icon.linkedin-in:before, .fa-linkedin-in:before {
+  content: "\f0e1"; }
+
+.sys-icon.linode:before, .fa-linode:before {
+  content: "\f2b8"; }
+
+.sys-icon.linux:before, .fa-linux:before {
+  content: "\f17c"; }
+
+.sys-icon.lira-sign:before, .fa-lira-sign:before {
+  content: "\f195"; }
+
+.sys-icon.list:before, .fa-list:before {
+  content: "\f03a"; }
+
+.sys-icon.list-alt:before, .fa-list-alt:before {
+  content: "\f022"; }
+
+.sys-icon.list-ol:before, .fa-list-ol:before {
+  content: "\f0cb"; }
+
+.sys-icon.list-ul:before, .fa-list-ul:before {
+  content: "\f0ca"; }
+
+.sys-icon.location-arrow:before, .fa-location-arrow:before {
+  content: "\f124"; }
+
+.sys-icon.lock:before, .fa-lock:before {
+  content: "\f023"; }
+
+.sys-icon.lock-alt:before, .fa-lock-alt:before {
+  content: "\f30d"; }
+
+.sys-icon.lock-open:before, .fa-lock-open:before {
+  content: "\f3c1"; }
+
+.sys-icon.lock-open-alt:before, .fa-lock-open-alt:before {
+  content: "\f3c2"; }
+
+.sys-icon.long-arrow-alt-down:before, .fa-long-arrow-alt-down:before {
+  content: "\f309"; }
+
+.sys-icon.long-arrow-alt-left:before, .fa-long-arrow-alt-left:before {
+  content: "\f30a"; }
+
+.sys-icon.long-arrow-alt-right:before, .fa-long-arrow-alt-right:before {
+  content: "\f30b"; }
+
+.sys-icon.long-arrow-alt-up:before, .fa-long-arrow-alt-up:before {
+  content: "\f30c"; }
+
+.sys-icon.long-arrow-down:before, .fa-long-arrow-down:before {
+  content: "\f175"; }
+
+.sys-icon.long-arrow-left:before, .fa-long-arrow-left:before {
+  content: "\f177"; }
+
+.sys-icon.long-arrow-right:before, .fa-long-arrow-right:before {
+  content: "\f178"; }
+
+.sys-icon.long-arrow-up:before, .fa-long-arrow-up:before {
+  content: "\f176"; }
+
+.sys-icon.loveseat:before, .fa-loveseat:before {
+  content: "\f4cc"; }
+
+.sys-icon.low-vision:before, .fa-low-vision:before {
+  content: "\f2a8"; }
+
+.sys-icon.luchador:before, .fa-luchador:before {
+  content: "\f455"; }
+
+.sys-icon.lyft:before, .fa-lyft:before {
+  content: "\f3c3"; }
+
+.sys-icon.magento:before, .fa-magento:before {
+  content: "\f3c4"; }
+
+.sys-icon.magic:before, .fa-magic:before {
+  content: "\f0d0"; }
+
+.sys-icon.magnet:before, .fa-magnet:before {
+  content: "\f076"; }
+
+.sys-icon.male:before, .fa-male:before {
+  content: "\f183"; }
+
+.sys-icon.mandalorian:before, .fa-mandalorian:before {
+  content: "\f50f"; }
+
+.sys-icon.map:before, .fa-map:before {
+  content: "\f279"; }
+
+.sys-icon.map-marker:before, .fa-map-marker:before {
+  content: "\f041"; }
+
+.sys-icon.map-marker-alt:before, .fa-map-marker-alt:before {
+  content: "\f3c5"; }
+
+.sys-icon.map-pin:before, .fa-map-pin:before {
+  content: "\f276"; }
+
+.sys-icon.map-signs:before, .fa-map-signs:before {
+  content: "\f277"; }
+
+.sys-icon.mars:before, .fa-mars:before {
+  content: "\f222"; }
+
+.sys-icon.mars-double:before, .fa-mars-double:before {
+  content: "\f227"; }
+
+.sys-icon.mars-stroke:before, .fa-mars-stroke:before {
+  content: "\f229"; }
+
+.sys-icon.mars-stroke-h:before, .fa-mars-stroke-h:before {
+  content: "\f22b"; }
+
+.sys-icon.mars-stroke-v:before, .fa-mars-stroke-v:before {
+  content: "\f22a"; }
+
+.sys-icon.mastodon:before, .fa-mastodon:before {
+  content: "\f4f6"; }
+
+.sys-icon.maxcdn:before, .fa-maxcdn:before {
+  content: "\f136"; }
+
+.sys-icon.medapps:before, .fa-medapps:before {
+  content: "\f3c6"; }
+
+.sys-icon.medium:before, .fa-medium:before {
+  content: "\f23a"; }
+
+.sys-icon.medium-m:before, .fa-medium-m:before {
+  content: "\f3c7"; }
+
+.sys-icon.medkit:before, .fa-medkit:before {
+  content: "\f0fa"; }
+
+.sys-icon.medrt:before, .fa-medrt:before {
+  content: "\f3c8"; }
+
+.sys-icon.meetup:before, .fa-meetup:before {
+  content: "\f2e0"; }
+
+.sys-icon.meh:before, .fa-meh:before {
+  content: "\f11a"; }
+
+.sys-icon.memory:before, .fa-memory:before {
+  content: "\f538"; }
+
+.sys-icon.mercury:before, .fa-mercury:before {
+  content: "\f223"; }
+
+.sys-icon.microchip:before, .fa-microchip:before {
+  content: "\f2db"; }
+
+.sys-icon.microphone:before, .fa-microphone:before {
+  content: "\f130"; }
+
+.sys-icon.microphone-alt:before, .fa-microphone-alt:before {
+  content: "\f3c9"; }
+
+.sys-icon.microphone-alt-slash:before, .fa-microphone-alt-slash:before {
+  content: "\f539"; }
+
+.sys-icon.microphone-slash:before, .fa-microphone-slash:before {
+  content: "\f131"; }
+
+.sys-icon.microsoft:before, .fa-microsoft:before {
+  content: "\f3ca"; }
+
+.sys-icon.minus:before, .fa-minus:before {
+  content: "\f068"; }
+
+.sys-icon.minus-circle:before, .fa-minus-circle:before {
+  content: "\f056"; }
+
+.sys-icon.minus-hexagon:before, .fa-minus-hexagon:before {
+  content: "\f307"; }
+
+.sys-icon.minus-octagon:before, .fa-minus-octagon:before {
+  content: "\f308"; }
+
+.sys-icon.minus-square:before, .fa-minus-square:before {
+  content: "\f146"; }
+
+.sys-icon.mix:before, .fa-mix:before {
+  content: "\f3cb"; }
+
+.sys-icon.mixcloud:before, .fa-mixcloud:before {
+  content: "\f289"; }
+
+.sys-icon.mizuni:before, .fa-mizuni:before {
+  content: "\f3cc"; }
+
+.sys-icon.mobile:before, .fa-mobile:before {
+  content: "\f10b"; }
+
+.sys-icon.mobile-alt:before, .fa-mobile-alt:before {
+  content: "\f3cd"; }
+
+.sys-icon.mobile-android:before, .fa-mobile-android:before {
+  content: "\f3ce"; }
+
+.sys-icon.mobile-android-alt:before, .fa-mobile-android-alt:before {
+  content: "\f3cf"; }
+
+.sys-icon.modx:before, .fa-modx:before {
+  content: "\f285"; }
+
+.sys-icon.monero:before, .fa-monero:before {
+  content: "\f3d0"; }
+
+.sys-icon.money-bill:before, .fa-money-bill:before {
+  content: "\f0d6"; }
+
+.sys-icon.money-bill-alt:before, .fa-money-bill-alt:before {
+  content: "\f3d1"; }
+
+.sys-icon.money-bill-wave:before, .fa-money-bill-wave:before {
+  content: "\f53a"; }
+
+.sys-icon.money-bill-wave-alt:before, .fa-money-bill-wave-alt:before {
+  content: "\f53b"; }
+
+.sys-icon.money-check:before, .fa-money-check:before {
+  content: "\f53c"; }
+
+.sys-icon.money-check-alt:before, .fa-money-check-alt:before {
+  content: "\f53d"; }
+
+.sys-icon.moon:before, .fa-moon:before {
+  content: "\f186"; }
+
+.sys-icon.motorcycle:before, .fa-motorcycle:before {
+  content: "\f21c"; }
+
+.sys-icon.mouse-pointer:before, .fa-mouse-pointer:before {
+  content: "\f245"; }
+
+.sys-icon.music:before, .fa-music:before {
+  content: "\f001"; }
+
+.sys-icon.napster:before, .fa-napster:before {
+  content: "\f3d2"; }
+
+.sys-icon.neuter:before, .fa-neuter:before {
+  content: "\f22c"; }
+
+.sys-icon.newspaper:before, .fa-newspaper:before {
+  content: "\f1ea"; }
+
+.sys-icon.nintendo-switch:before, .fa-nintendo-switch:before {
+  content: "\f418"; }
+
+.sys-icon.node:before, .fa-node:before {
+  content: "\f419"; }
+
+.sys-icon.node-js:before, .fa-node-js:before {
+  content: "\f3d3"; }
+
+.sys-icon.not-equal:before, .fa-not-equal:before {
+  content: "\f53e"; }
+
+.sys-icon.notes-medical:before, .fa-notes-medical:before {
+  content: "\f481"; }
+
+.sys-icon.npm:before, .fa-npm:before {
+  content: "\f3d4"; }
+
+.sys-icon.ns8:before, .fa-ns8:before {
+  content: "\f3d5"; }
+
+.sys-icon.nutritionix:before, .fa-nutritionix:before {
+  content: "\f3d6"; }
+
+.sys-icon.object-group:before, .fa-object-group:before {
+  content: "\f247"; }
+
+.sys-icon.object-ungroup:before, .fa-object-ungroup:before {
+  content: "\f248"; }
+
+.sys-icon.octagon:before, .fa-octagon:before {
+  content: "\f306"; }
+
+.sys-icon.odnoklassniki:before, .fa-odnoklassniki:before {
+  content: "\f263"; }
+
+.sys-icon.odnoklassniki-square:before, .fa-odnoklassniki-square:before {
+  content: "\f264"; }
+
+.sys-icon.old-republic:before, .fa-old-republic:before {
+  content: "\f510"; }
+
+.sys-icon.opencart:before, .fa-opencart:before {
+  content: "\f23d"; }
+
+.sys-icon.openid:before, .fa-openid:before {
+  content: "\f19b"; }
+
+.sys-icon.opera:before, .fa-opera:before {
+  content: "\f26a"; }
+
+.sys-icon.optin-monster:before, .fa-optin-monster:before {
+  content: "\f23c"; }
+
+.sys-icon.osi:before, .fa-osi:before {
+  content: "\f41a"; }
+
+.sys-icon.outdent:before, .fa-outdent:before {
+  content: "\f03b"; }
+
+.sys-icon.page4:before, .fa-page4:before {
+  content: "\f3d7"; }
+
+.sys-icon.pagelines:before, .fa-pagelines:before {
+  content: "\f18c"; }
+
+.sys-icon.paint-brush:before, .fa-paint-brush:before {
+  content: "\f1fc"; }
+
+.sys-icon.palette:before, .fa-palette:before {
+  content: "\f53f"; }
+
+.sys-icon.palfed:before, .fa-palfed:before {
+  content: "\f3d8"; }
+
+.sys-icon.pallet:before, .fa-pallet:before {
+  content: "\f482"; }
+
+.sys-icon.pallet-alt:before, .fa-pallet-alt:before {
+  content: "\f483"; }
+
+.sys-icon.paper-plane:before, .fa-paper-plane:before {
+  content: "\f1d8"; }
+
+.sys-icon.paperclip:before, .fa-paperclip:before {
+  content: "\f0c6"; }
+
+.sys-icon.parachute-box:before, .fa-parachute-box:before {
+  content: "\f4cd"; }
+
+.sys-icon.paragraph:before, .fa-paragraph:before {
+  content: "\f1dd"; }
+
+.sys-icon.parking:before, .fa-parking:before {
+  content: "\f540"; }
+
+.sys-icon.paste:before, .fa-paste:before {
+  content: "\f0ea"; }
+
+.sys-icon.patreon:before, .fa-patreon:before {
+  content: "\f3d9"; }
+
+.sys-icon.pause:before, .fa-pause:before {
+  content: "\f04c"; }
+
+.sys-icon.pause-circle:before, .fa-pause-circle:before {
+  content: "\f28b"; }
+
+.sys-icon.paw:before, .fa-paw:before {
+  content: "\f1b0"; }
+
+.sys-icon.paypal:before, .fa-paypal:before {
+  content: "\f1ed"; }
+
+.sys-icon.pen:before, .fa-pen:before {
+  content: "\f304"; }
+
+.sys-icon.pen-alt:before, .fa-pen-alt:before {
+  content: "\f305"; }
+
+.sys-icon.pen-square:before, .fa-pen-square:before {
+  content: "\f14b"; }
+
+.sys-icon.pencil:before, .fa-pencil:before {
+  content: "\f040"; }
+
+.sys-icon.pencil-alt:before, .fa-pencil-alt:before {
+  content: "\f303"; }
+
+.sys-icon.pennant:before, .fa-pennant:before {
+  content: "\f456"; }
+
+.sys-icon.people-carry:before, .fa-people-carry:before {
+  content: "\f4ce"; }
+
+.sys-icon.percent:before, .fa-percent:before {
+  content: "\f295"; }
+
+.sys-icon.percentage:before, .fa-percentage:before {
+  content: "\f541"; }
+
+.sys-icon.periscope:before, .fa-periscope:before {
+  content: "\f3da"; }
+
+.sys-icon.person-carry:before, .fa-person-carry:before {
+  content: "\f4cf"; }
+
+.sys-icon.person-dolly:before, .fa-person-dolly:before {
+  content: "\f4d0"; }
+
+.sys-icon.person-dolly-empty:before, .fa-person-dolly-empty:before {
+  content: "\f4d1"; }
+
+.sys-icon.phabricator:before, .fa-phabricator:before {
+  content: "\f3db"; }
+
+.sys-icon.phoenix-framework:before, .fa-phoenix-framework:before {
+  content: "\f3dc"; }
+
+.sys-icon.phoenix-squadron:before, .fa-phoenix-squadron:before {
+  content: "\f511"; }
+
+.sys-icon.phone:before, .fa-phone:before {
+  content: "\f095"; }
+
+.sys-icon.phone-plus:before, .fa-phone-plus:before {
+  content: "\f4d2"; }
+
+.sys-icon.phone-slash:before, .fa-phone-slash:before {
+  content: "\f3dd"; }
+
+.sys-icon.phone-square:before, .fa-phone-square:before {
+  content: "\f098"; }
+
+.sys-icon.phone-volume:before, .fa-phone-volume:before {
+  content: "\f2a0"; }
+
+.sys-icon.php:before, .fa-php:before {
+  content: "\f457"; }
+
+.sys-icon.pied-piper:before, .fa-pied-piper:before {
+  content: "\f2ae"; }
+
+.sys-icon.pied-piper-alt:before, .fa-pied-piper-alt:before {
+  content: "\f1a8"; }
+
+.sys-icon.pied-piper-hat:before, .fa-pied-piper-hat:before {
+  content: "\f4e5"; }
+
+.sys-icon.pied-piper-pp:before, .fa-pied-piper-pp:before {
+  content: "\f1a7"; }
+
+.sys-icon.piggy-bank:before, .fa-piggy-bank:before {
+  content: "\f4d3"; }
+
+.sys-icon.pills:before, .fa-pills:before {
+  content: "\f484"; }
+
+.sys-icon.pinterest:before, .fa-pinterest:before {
+  content: "\f0d2"; }
+
+.sys-icon.pinterest-p:before, .fa-pinterest-p:before {
+  content: "\f231"; }
+
+.sys-icon.pinterest-square:before, .fa-pinterest-square:before {
+  content: "\f0d3"; }
+
+.sys-icon.plane:before, .fa-plane:before {
+  content: "\f072"; }
+
+.sys-icon.plane-alt:before, .fa-plane-alt:before {
+  content: "\f3de"; }
+
+.sys-icon.play:before, .fa-play:before {
+  content: "\f04b"; }
+
+.sys-icon.play-circle:before, .fa-play-circle:before {
+  content: "\f144"; }
+
+.sys-icon.playstation:before, .fa-playstation:before {
+  content: "\f3df"; }
+
+.sys-icon.plug:before, .fa-plug:before {
+  content: "\f1e6"; }
+
+.sys-icon.plus:before, .fa-plus:before {
+  content: "\f067"; }
+
+.sys-icon.plus-circle:before, .fa-plus-circle:before {
+  content: "\f055"; }
+
+.sys-icon.plus-hexagon:before, .fa-plus-hexagon:before {
+  content: "\f300"; }
+
+.sys-icon.plus-octagon:before, .fa-plus-octagon:before {
+  content: "\f301"; }
+
+.sys-icon.plus-square:before, .fa-plus-square:before {
+  content: "\f0fe"; }
+
+.sys-icon.podcast:before, .fa-podcast:before {
+  content: "\f2ce"; }
+
+.sys-icon.poo:before, .fa-poo:before {
+  content: "\f2fe"; }
+
+.sys-icon.portrait:before, .fa-portrait:before {
+  content: "\f3e0"; }
+
+.sys-icon.pound-sign:before, .fa-pound-sign:before {
+  content: "\f154"; }
+
+.sys-icon.power-off:before, .fa-power-off:before {
+  content: "\f011"; }
+
+.sys-icon.prescription-bottle:before, .fa-prescription-bottle:before {
+  content: "\f485"; }
+
+.sys-icon.prescription-bottle-alt:before, .fa-prescription-bottle-alt:before {
+  content: "\f486"; }
+
+.sys-icon.print:before, .fa-print:before {
+  content: "\f02f"; }
+
+.sys-icon.procedures:before, .fa-procedures:before {
+  content: "\f487"; }
+
+.sys-icon.product-hunt:before, .fa-product-hunt:before {
+  content: "\f288"; }
+
+.sys-icon.project-diagram:before, .fa-project-diagram:before {
+  content: "\f542"; }
+
+.sys-icon.pushed:before, .fa-pushed:before {
+  content: "\f3e1"; }
+
+.sys-icon.puzzle-piece:before, .fa-puzzle-piece:before {
+  content: "\f12e"; }
+
+.sys-icon.python:before, .fa-python:before {
+  content: "\f3e2"; }
+
+.sys-icon.qq:before, .fa-qq:before {
+  content: "\f1d6"; }
+
+.sys-icon.qrcode:before, .fa-qrcode:before {
+  content: "\f029"; }
+
+.sys-icon.question:before, .fa-question:before {
+  content: "\f128"; }
+
+.sys-icon.question-circle:before, .fa-question-circle:before {
+  content: "\f059"; }
+
+.sys-icon.question-square:before, .fa-question-square:before {
+  content: "\f2fd"; }
+
+.sys-icon.quidditch:before, .fa-quidditch:before {
+  content: "\f458"; }
+
+.sys-icon.quinscape:before, .fa-quinscape:before {
+  content: "\f459"; }
+
+.sys-icon.quora:before, .fa-quora:before {
+  content: "\f2c4"; }
+
+.sys-icon.quote-left:before, .fa-quote-left:before {
+  content: "\f10d"; }
+
+.sys-icon.quote-right:before, .fa-quote-right:before {
+  content: "\f10e"; }
+
+.sys-icon.r-project:before, .fa-r-project:before {
+  content: "\f4f7"; }
+
+.sys-icon.racquet:before, .fa-racquet:before {
+  content: "\f45a"; }
+
+.sys-icon.ramp-loading:before, .fa-ramp-loading:before {
+  content: "\f4d4"; }
+
+.sys-icon.random:before, .fa-random:before {
+  content: "\f074"; }
+
+.sys-icon.ravelry:before, .fa-ravelry:before {
+  content: "\f2d9"; }
+
+.sys-icon.react:before, .fa-react:before {
+  content: "\f41b"; }
+
+.sys-icon.readme:before, .fa-readme:before {
+  content: "\f4d5"; }
+
+.sys-icon.rebel:before, .fa-rebel:before {
+  content: "\f1d0"; }
+
+.sys-icon.receipt:before, .fa-receipt:before {
+  content: "\f543"; }
+
+.sys-icon.rectangle-landscape:before, .fa-rectangle-landscape:before {
+  content: "\f2fa"; }
+
+.sys-icon.rectangle-portrait:before, .fa-rectangle-portrait:before {
+  content: "\f2fb"; }
+
+.sys-icon.rectangle-wide:before, .fa-rectangle-wide:before {
+  content: "\f2fc"; }
+
+.sys-icon.recycle:before, .fa-recycle:before {
+  content: "\f1b8"; }
+
+.sys-icon.red-river:before, .fa-red-river:before {
+  content: "\f3e3"; }
+
+.sys-icon.reddit:before, .fa-reddit:before {
+  content: "\f1a1"; }
+
+.sys-icon.reddit-alien:before, .fa-reddit-alien:before {
+  content: "\f281"; }
+
+.sys-icon.reddit-square:before, .fa-reddit-square:before {
+  content: "\f1a2"; }
+
+.sys-icon.redo:before, .fa-redo:before {
+  content: "\f01e"; }
+
+.sys-icon.redo-alt:before, .fa-redo-alt:before {
+  content: "\f2f9"; }
+
+.sys-icon.registered:before, .fa-registered:before {
+  content: "\f25d"; }
+
+.sys-icon.rendact:before, .fa-rendact:before {
+  content: "\f3e4"; }
+
+.sys-icon.renren:before, .fa-renren:before {
+  content: "\f18b"; }
+
+.sys-icon.repeat:before, .fa-repeat:before {
+  content: "\f363"; }
+
+.sys-icon.repeat-1:before, .fa-repeat-1:before {
+  content: "\f365"; }
+
+.sys-icon.repeat-1-alt:before, .fa-repeat-1-alt:before {
+  content: "\f366"; }
+
+.sys-icon.repeat-alt:before, .fa-repeat-alt:before {
+  content: "\f364"; }
+
+.sys-icon.reply:before, .fa-reply:before {
+  content: "\f3e5"; }
+
+.sys-icon.reply-all:before, .fa-reply-all:before {
+  content: "\f122"; }
+
+.sys-icon.replyd:before, .fa-replyd:before {
+  content: "\f3e6"; }
+
+.sys-icon.researchgate:before, .fa-researchgate:before {
+  content: "\f4f8"; }
+
+.sys-icon.resolving:before, .fa-resolving:before {
+  content: "\f3e7"; }
+
+.sys-icon.retweet:before, .fa-retweet:before {
+  content: "\f079"; }
+
+.sys-icon.retweet-alt:before, .fa-retweet-alt:before {
+  content: "\f361"; }
+
+.sys-icon.ribbon:before, .fa-ribbon:before {
+  content: "\f4d6"; }
+
+.sys-icon.road:before, .fa-road:before {
+  content: "\f018"; }
+
+.sys-icon.robot:before, .fa-robot:before {
+  content: "\f544"; }
+
+.sys-icon.rocket:before, .fa-rocket:before {
+  content: "\f135"; }
+
+.sys-icon.rocketchat:before, .fa-rocketchat:before {
+  content: "\f3e8"; }
+
+.sys-icon.rockrms:before, .fa-rockrms:before {
+  content: "\f3e9"; }
+
+.sys-icon.route:before, .fa-route:before {
+  content: "\f4d7"; }
+
+.sys-icon.rss:before, .fa-rss:before {
+  content: "\f09e"; }
+
+.sys-icon.rss-square:before, .fa-rss-square:before {
+  content: "\f143"; }
+
+.sys-icon.ruble-sign:before, .fa-ruble-sign:before {
+  content: "\f158"; }
+
+.sys-icon.ruler:before, .fa-ruler:before {
+  content: "\f545"; }
+
+.sys-icon.ruler-combined:before, .fa-ruler-combined:before {
+  content: "\f546"; }
+
+.sys-icon.ruler-horizontal:before, .fa-ruler-horizontal:before {
+  content: "\f547"; }
+
+.sys-icon.ruler-vertical:before, .fa-ruler-vertical:before {
+  content: "\f548"; }
+
+.sys-icon.rupee-sign:before, .fa-rupee-sign:before {
+  content: "\f156"; }
+
+.sys-icon.safari:before, .fa-safari:before {
+  content: "\f267"; }
+
+.sys-icon.sass:before, .fa-sass:before {
+  content: "\f41e"; }
+
+.sys-icon.save:before, .fa-save:before {
+  content: "\f0c7"; }
+
+.sys-icon.scanner:before, .fa-scanner:before {
+  content: "\f488"; }
+
+.sys-icon.scanner-keyboard:before, .fa-scanner-keyboard:before {
+  content: "\f489"; }
+
+.sys-icon.scanner-touchscreen:before, .fa-scanner-touchscreen:before {
+  content: "\f48a"; }
+
+.sys-icon.schlix:before, .fa-schlix:before {
+  content: "\f3ea"; }
+
+.sys-icon.school:before, .fa-school:before {
+  content: "\f549"; }
+
+.sys-icon.screwdriver:before, .fa-screwdriver:before {
+  content: "\f54a"; }
+
+.sys-icon.scribd:before, .fa-scribd:before {
+  content: "\f28a"; }
+
+.sys-icon.scrubber:before, .fa-scrubber:before {
+  content: "\f2f8"; }
+
+.sys-icon.search:before, .fa-search:before {
+  content: "\f002"; }
+
+.sys-icon.search-minus:before, .fa-search-minus:before {
+  content: "\f010"; }
+
+.sys-icon.search-plus:before, .fa-search-plus:before {
+  content: "\f00e"; }
+
+.sys-icon.searchengin:before, .fa-searchengin:before {
+  content: "\f3eb"; }
+
+.sys-icon.seedling:before, .fa-seedling:before {
+  content: "\f4d8"; }
+
+.sys-icon.sellcast:before, .fa-sellcast:before {
+  content: "\f2da"; }
+
+.sys-icon.sellsy:before, .fa-sellsy:before {
+  content: "\f213"; }
+
+.sys-icon.server:before, .fa-server:before {
+  content: "\f233"; }
+
+.sys-icon.servicestack:before, .fa-servicestack:before {
+  content: "\f3ec"; }
+
+.sys-icon.share:before, .fa-share:before {
+  content: "\f064"; }
+
+.sys-icon.share-all:before, .fa-share-all:before {
+  content: "\f367"; }
+
+.sys-icon.share-alt:before, .fa-share-alt:before {
+  content: "\f1e0"; }
+
+.sys-icon.share-alt-square:before, .fa-share-alt-square:before {
+  content: "\f1e1"; }
+
+.sys-icon.share-square:before, .fa-share-square:before {
+  content: "\f14d"; }
+
+.sys-icon.shekel-sign:before, .fa-shekel-sign:before {
+  content: "\f20b"; }
+
+.sys-icon.shield:before, .fa-shield:before {
+  content: "\f132"; }
+
+.sys-icon.shield-alt:before, .fa-shield-alt:before {
+  content: "\f3ed"; }
+
+.sys-icon.shield-check:before, .fa-shield-check:before {
+  content: "\f2f7"; }
+
+.sys-icon.ship:before, .fa-ship:before {
+  content: "\f21a"; }
+
+.sys-icon.shipping-fast:before, .fa-shipping-fast:before {
+  content: "\f48b"; }
+
+.sys-icon.shipping-timed:before, .fa-shipping-timed:before {
+  content: "\f48c"; }
+
+.sys-icon.shirtsinbulk:before, .fa-shirtsinbulk:before {
+  content: "\f214"; }
+
+.sys-icon.shoe-prints:before, .fa-shoe-prints:before {
+  content: "\f54b"; }
+
+.sys-icon.shopping-bag:before, .fa-shopping-bag:before {
+  content: "\f290"; }
+
+.sys-icon.shopping-basket:before, .fa-shopping-basket:before {
+  content: "\f291"; }
+
+.sys-icon.shopping-cart:before, .fa-shopping-cart:before {
+  content: "\f07a"; }
+
+.sys-icon.shower:before, .fa-shower:before {
+  content: "\f2cc"; }
+
+.sys-icon.shuttlecock:before, .fa-shuttlecock:before {
+  content: "\f45b"; }
+
+.sys-icon.sign:before, .fa-sign:before {
+  content: "\f4d9"; }
+
+.sys-icon.sign-in:before, .fa-sign-in:before {
+  content: "\f090"; }
+
+.sys-icon.sign-in-alt:before, .fa-sign-in-alt:before {
+  content: "\f2f6"; }
+
+.sys-icon.sign-language:before, .fa-sign-language:before {
+  content: "\f2a7"; }
+
+.sys-icon.sign-out:before, .fa-sign-out:before {
+  content: "\f08b"; }
+
+.sys-icon.sign-out-alt:before, .fa-sign-out-alt:before {
+  content: "\f2f5"; }
+
+.sys-icon.signal:before, .fa-signal:before {
+  content: "\f012"; }
+
+.sys-icon.simplybuilt:before, .fa-simplybuilt:before {
+  content: "\f215"; }
+
+.sys-icon.sistrix:before, .fa-sistrix:before {
+  content: "\f3ee"; }
+
+.sys-icon.sitemap:before, .fa-sitemap:before {
+  content: "\f0e8"; }
+
+.sys-icon.sith:before, .fa-sith:before {
+  content: "\f512"; }
+
+.sys-icon.skull:before, .fa-skull:before {
+  content: "\f54c"; }
+
+.sys-icon.skyatlas:before, .fa-skyatlas:before {
+  content: "\f216"; }
+
+.sys-icon.skype:before, .fa-skype:before {
+  content: "\f17e"; }
+
+.sys-icon.slack:before, .fa-slack:before {
+  content: "\f198"; }
+
+.sys-icon.slack-hash:before, .fa-slack-hash:before {
+  content: "\f3ef"; }
+
+.sys-icon.sliders-h:before, .fa-sliders-h:before {
+  content: "\f1de"; }
+
+.sys-icon.sliders-h-square:before, .fa-sliders-h-square:before {
+  content: "\f3f0"; }
+
+.sys-icon.sliders-v:before, .fa-sliders-v:before {
+  content: "\f3f1"; }
+
+.sys-icon.sliders-v-square:before, .fa-sliders-v-square:before {
+  content: "\f3f2"; }
+
+.sys-icon.slideshare:before, .fa-slideshare:before {
+  content: "\f1e7"; }
+
+.sys-icon.smile:before, .fa-smile:before {
+  content: "\f118"; }
+
+.sys-icon.smile-plus:before, .fa-smile-plus:before {
+  content: "\f4da"; }
+
+.sys-icon.smoking:before, .fa-smoking:before {
+  content: "\f48d"; }
+
+.sys-icon.smoking-ban:before, .fa-smoking-ban:before {
+  content: "\f54d"; }
+
+.sys-icon.snapchat:before, .fa-snapchat:before {
+  content: "\f2ab"; }
+
+.sys-icon.snapchat-ghost:before, .fa-snapchat-ghost:before {
+  content: "\f2ac"; }
+
+.sys-icon.snapchat-square:before, .fa-snapchat-square:before {
+  content: "\f2ad"; }
+
+.sys-icon.snowflake:before, .fa-snowflake:before {
+  content: "\f2dc"; }
+
+.sys-icon.sort:before, .fa-sort:before {
+  content: "\f0dc"; }
+
+.sys-icon.sort-alpha-down:before, .fa-sort-alpha-down:before {
+  content: "\f15d"; }
+
+.sys-icon.sort-alpha-up:before, .fa-sort-alpha-up:before {
+  content: "\f15e"; }
+
+.sys-icon.sort-amount-down:before, .fa-sort-amount-down:before {
+  content: "\f160"; }
+
+.sys-icon.sort-amount-up:before, .fa-sort-amount-up:before {
+  content: "\f161"; }
+
+.sys-icon.sort-down:before, .fa-sort-down:before {
+  content: "\f0dd"; }
+
+.sys-icon.sort-numeric-down:before, .fa-sort-numeric-down:before {
+  content: "\f162"; }
+
+.sys-icon.sort-numeric-up:before, .fa-sort-numeric-up:before {
+  content: "\f163"; }
+
+.sys-icon.sort-up:before, .fa-sort-up:before {
+  content: "\f0de"; }
+
+.sys-icon.soundcloud:before, .fa-soundcloud:before {
+  content: "\f1be"; }
+
+.sys-icon.space-shuttle:before, .fa-space-shuttle:before {
+  content: "\f197"; }
+
+.sys-icon.spade:before, .fa-spade:before {
+  content: "\f2f4"; }
+
+.sys-icon.speakap:before, .fa-speakap:before {
+  content: "\f3f3"; }
+
+.sys-icon.spinner:before, .fa-spinner:before {
+  content: "\f110"; }
+
+.sys-icon.spinner-third:before, .fa-spinner-third:before {
+  content: "\f3f4"; }
+
+.sys-icon.spotify:before, .fa-spotify:before {
+  content: "\f1bc"; }
+
+.sys-icon.square:before, .fa-square:before {
+  content: "\f0c8"; }
+
+.sys-icon.square-full:before, .fa-square-full:before {
+  content: "\f45c"; }
+
+.sys-icon.stack-exchange:before, .fa-stack-exchange:before {
+  content: "\f18d"; }
+
+.sys-icon.stack-overflow:before, .fa-stack-overflow:before {
+  content: "\f16c"; }
+
+.sys-icon.star:before, .fa-star:before {
+  content: "\f005"; }
+
+.sys-icon.star-exclamation:before, .fa-star-exclamation:before {
+  content: "\f2f3"; }
+
+.sys-icon.star-half:before, .fa-star-half:before {
+  content: "\f089"; }
+
+.sys-icon.staylinked:before, .fa-staylinked:before {
+  content: "\f3f5"; }
+
+.sys-icon.steam:before, .fa-steam:before {
+  content: "\f1b6"; }
+
+.sys-icon.steam-square:before, .fa-steam-square:before {
+  content: "\f1b7"; }
+
+.sys-icon.steam-symbol:before, .fa-steam-symbol:before {
+  content: "\f3f6"; }
+
+.sys-icon.step-backward:before, .fa-step-backward:before {
+  content: "\f048"; }
+
+.sys-icon.step-forward:before, .fa-step-forward:before {
+  content: "\f051"; }
+
+.sys-icon.stethoscope:before, .fa-stethoscope:before {
+  content: "\f0f1"; }
+
+.sys-icon.sticker-mule:before, .fa-sticker-mule:before {
+  content: "\f3f7"; }
+
+.sys-icon.sticky-note:before, .fa-sticky-note:before {
+  content: "\f249"; }
+
+.sys-icon.stop:before, .fa-stop:before {
+  content: "\f04d"; }
+
+.sys-icon.stop-circle:before, .fa-stop-circle:before {
+  content: "\f28d"; }
+
+.sys-icon.stopwatch:before, .fa-stopwatch:before {
+  content: "\f2f2"; }
+
+.sys-icon.store:before, .fa-store:before {
+  content: "\f54e"; }
+
+.sys-icon.store-alt:before, .fa-store-alt:before {
+  content: "\f54f"; }
+
+.sys-icon.strava:before, .fa-strava:before {
+  content: "\f428"; }
+
+.sys-icon.stream:before, .fa-stream:before {
+  content: "\f550"; }
+
+.sys-icon.street-view:before, .fa-street-view:before {
+  content: "\f21d"; }
+
+.sys-icon.strikethrough:before, .fa-strikethrough:before {
+  content: "\f0cc"; }
+
+.sys-icon.stripe:before, .fa-stripe:before {
+  content: "\f429"; }
+
+.sys-icon.stripe-s:before, .fa-stripe-s:before {
+  content: "\f42a"; }
+
+.sys-icon.stroopwafel:before, .fa-stroopwafel:before {
+  content: "\f551"; }
+
+.sys-icon.studiovinari:before, .fa-studiovinari:before {
+  content: "\f3f8"; }
+
+.sys-icon.stumbleupon:before, .fa-stumbleupon:before {
+  content: "\f1a4"; }
+
+.sys-icon.stumbleupon-circle:before, .fa-stumbleupon-circle:before {
+  content: "\f1a3"; }
+
+.sys-icon.subscript:before, .fa-subscript:before {
+  content: "\f12c"; }
+
+.sys-icon.subway:before, .fa-subway:before {
+  content: "\f239"; }
+
+.sys-icon.suitcase:before, .fa-suitcase:before {
+  content: "\f0f2"; }
+
+.sys-icon.sun:before, .fa-sun:before {
+  content: "\f185"; }
+
+.sys-icon.superpowers:before, .fa-superpowers:before {
+  content: "\f2dd"; }
+
+.sys-icon.superscript:before, .fa-superscript:before {
+  content: "\f12b"; }
+
+.sys-icon.supple:before, .fa-supple:before {
+  content: "\f3f9"; }
+
+.sys-icon.sync:before, .fa-sync:before {
+  content: "\f021"; }
+
+.sys-icon.sync-alt:before, .fa-sync-alt:before {
+  content: "\f2f1"; }
+
+.sys-icon.syringe:before, .fa-syringe:before {
+  content: "\f48e"; }
+
+.sys-icon.table:before, .fa-table:before {
+  content: "\f0ce"; }
+
+.sys-icon.table-tennis:before, .fa-table-tennis:before {
+  content: "\f45d"; }
+
+.sys-icon.tablet:before, .fa-tablet:before {
+  content: "\f10a"; }
+
+.sys-icon.tablet-alt:before, .fa-tablet-alt:before {
+  content: "\f3fa"; }
+
+.sys-icon.tablet-android:before, .fa-tablet-android:before {
+  content: "\f3fb"; }
+
+.sys-icon.tablet-android-alt:before, .fa-tablet-android-alt:before {
+  content: "\f3fc"; }
+
+.sys-icon.tablet-rugged:before, .fa-tablet-rugged:before {
+  content: "\f48f"; }
+
+.sys-icon.tablets:before, .fa-tablets:before {
+  content: "\f490"; }
+
+.sys-icon.tachometer:before, .fa-tachometer:before {
+  content: "\f0e4"; }
+
+.sys-icon.tachometer-alt:before, .fa-tachometer-alt:before {
+  content: "\f3fd"; }
+
+.sys-icon.tag:before, .fa-tag:before {
+  content: "\f02b"; }
+
+.sys-icon.tags:before, .fa-tags:before {
+  content: "\f02c"; }
+
+.sys-icon.tape:before, .fa-tape:before {
+  content: "\f4db"; }
+
+.sys-icon.tasks:before, .fa-tasks:before {
+  content: "\f0ae"; }
+
+.sys-icon.taxi:before, .fa-taxi:before {
+  content: "\f1ba"; }
+
+.sys-icon.teamspeak:before, .fa-teamspeak:before {
+  content: "\f4f9"; }
+
+.sys-icon.telegram:before, .fa-telegram:before {
+  content: "\f2c6"; }
+
+.sys-icon.telegram-plane:before, .fa-telegram-plane:before {
+  content: "\f3fe"; }
+
+.sys-icon.tencent-weibo:before, .fa-tencent-weibo:before {
+  content: "\f1d5"; }
+
+.sys-icon.tennis-ball:before, .fa-tennis-ball:before {
+  content: "\f45e"; }
+
+.sys-icon.terminal:before, .fa-terminal:before {
+  content: "\f120"; }
+
+.sys-icon.text-height:before, .fa-text-height:before {
+  content: "\f034"; }
+
+.sys-icon.text-width:before, .fa-text-width:before {
+  content: "\f035"; }
+
+.sys-icon.th:before, .fa-th:before {
+  content: "\f00a"; }
+
+.sys-icon.th-large:before, .fa-th-large:before {
+  content: "\f009"; }
+
+.sys-icon.th-list:before, .fa-th-list:before {
+  content: "\f00b"; }
+
+.sys-icon.themeisle:before, .fa-themeisle:before {
+  content: "\f2b2"; }
+
+.sys-icon.thermometer:before, .fa-thermometer:before {
+  content: "\f491"; }
+
+.sys-icon.thermometer-empty:before, .fa-thermometer-empty:before {
+  content: "\f2cb"; }
+
+.sys-icon.thermometer-full:before, .fa-thermometer-full:before {
+  content: "\f2c7"; }
+
+.sys-icon.thermometer-half:before, .fa-thermometer-half:before {
+  content: "\f2c9"; }
+
+.sys-icon.thermometer-quarter:before, .fa-thermometer-quarter:before {
+  content: "\f2ca"; }
+
+.sys-icon.thermometer-three-quarters:before, .fa-thermometer-three-quarters:before {
+  content: "\f2c8"; }
+
+.sys-icon.thumbs-down:before, .fa-thumbs-down:before {
+  content: "\f165"; }
+
+.sys-icon.thumbs-up:before, .fa-thumbs-up:before {
+  content: "\f164"; }
+
+.sys-icon.thumbtack:before, .fa-thumbtack:before {
+  content: "\f08d"; }
+
+.sys-icon.ticket:before, .fa-ticket:before {
+  content: "\f145"; }
+
+.sys-icon.ticket-alt:before, .fa-ticket-alt:before {
+  content: "\f3ff"; }
+
+.sys-icon.times:before, .sys-icon.remove:before, .fa-times:before {
+  content: "\f00d"; }
+
+.sys-icon.times-circle:before, .fa-times-circle:before {
+  content: "\f057"; }
+
+.sys-icon.times-hexagon:before, .fa-times-hexagon:before {
+  content: "\f2ee"; }
+
+.sys-icon.times-octagon:before, .fa-times-octagon:before {
+  content: "\f2f0"; }
+
+.sys-icon.times-square:before, .fa-times-square:before {
+  content: "\f2d3"; }
+
+.sys-icon.tint:before, .fa-tint:before {
+  content: "\f043"; }
+
+.sys-icon.toggle-off:before, .fa-toggle-off:before {
+  content: "\f204"; }
+
+.sys-icon.toggle-on:before, .fa-toggle-on:before {
+  content: "\f205"; }
+
+.sys-icon.toolbox:before, .fa-toolbox:before {
+  content: "\f552"; }
+
+.sys-icon.trade-federation:before, .fa-trade-federation:before {
+  content: "\f513"; }
+
+.sys-icon.trademark:before, .fa-trademark:before {
+  content: "\f25c"; }
+
+.sys-icon.train:before, .fa-train:before {
+  content: "\f238"; }
+
+.sys-icon.transgender:before, .fa-transgender:before {
+  content: "\f224"; }
+
+.sys-icon.transgender-alt:before, .fa-transgender-alt:before {
+  content: "\f225"; }
+
+.sys-icon.trash:before, .fa-trash:before {
+  content: "\f1f8"; }
+
+.sys-icon.trash-alt:before, .fa-trash-alt:before {
+  content: "\f2ed"; }
+
+.sys-icon.tree:before, .fa-tree:before {
+  content: "\f1bb"; }
+
+.sys-icon.tree-alt:before, .fa-tree-alt:before {
+  content: "\f400"; }
+
+.sys-icon.trello:before, .fa-trello:before {
+  content: "\f181"; }
+
+.sys-icon.triangle:before, .fa-triangle:before {
+  content: "\f2ec"; }
+
+.sys-icon.tripadvisor:before, .fa-tripadvisor:before {
+  content: "\f262"; }
+
+.sys-icon.trophy:before, .fa-trophy:before {
+  content: "\f091"; }
+
+.sys-icon.trophy-alt:before, .fa-trophy-alt:before {
+  content: "\f2eb"; }
+
+.sys-icon.truck:before, .fa-truck:before {
+  content: "\f0d1"; }
+
+.sys-icon.truck-container:before, .fa-truck-container:before {
+  content: "\f4dc"; }
+
+.sys-icon.truck-couch:before, .fa-truck-couch:before {
+  content: "\f4dd"; }
+
+.sys-icon.truck-loading:before, .fa-truck-loading:before {
+  content: "\f4de"; }
+
+.sys-icon.truck-moving:before, .fa-truck-moving:before {
+  content: "\f4df"; }
+
+.sys-icon.truck-ramp:before, .fa-truck-ramp:before {
+  content: "\f4e0"; }
+
+.sys-icon.tshirt:before, .fa-tshirt:before {
+  content: "\f553"; }
+
+.sys-icon.tty:before, .fa-tty:before {
+  content: "\f1e4"; }
+
+.sys-icon.tumblr:before, .fa-tumblr:before {
+  content: "\f173"; }
+
+.sys-icon.tumblr-square:before, .fa-tumblr-square:before {
+  content: "\f174"; }
+
+.sys-icon.tv:before, .fa-tv:before {
+  content: "\f26c"; }
+
+.sys-icon.tv-retro:before, .fa-tv-retro:before {
+  content: "\f401"; }
+
+.sys-icon.twitch:before, .fa-twitch:before {
+  content: "\f1e8"; }
+
+.sys-icon.twitter:before, .fa-twitter:before {
+  content: "\f099"; }
+
+.sys-icon.twitter-square:before, .fa-twitter-square:before {
+  content: "\f081"; }
+
+.sys-icon.typo3:before, .fa-typo3:before {
+  content: "\f42b"; }
+
+.sys-icon.uber:before, .fa-uber:before {
+  content: "\f402"; }
+
+.sys-icon.uikit:before, .fa-uikit:before {
+  content: "\f403"; }
+
+.sys-icon.umbrella:before, .fa-umbrella:before {
+  content: "\f0e9"; }
+
+.sys-icon.underline:before, .fa-underline:before {
+  content: "\f0cd"; }
+
+.sys-icon.undo:before, .fa-undo:before {
+  content: "\f0e2"; }
+
+.sys-icon.undo-alt:before, .fa-undo-alt:before {
+  content: "\f2ea"; }
+
+.sys-icon.uniregistry:before, .fa-uniregistry:before {
+  content: "\f404"; }
+
+.sys-icon.universal-access:before, .fa-universal-access:before {
+  content: "\f29a"; }
+
+.sys-icon.university:before, .fa-university:before {
+  content: "\f19c"; }
+
+.sys-icon.unlink:before, .fa-unlink:before {
+  content: "\f127"; }
+
+.sys-icon.unlock:before, .fa-unlock:before {
+  content: "\f09c"; }
+
+.sys-icon.unlock-alt:before, .fa-unlock-alt:before {
+  content: "\f13e"; }
+
+.sys-icon.untappd:before, .fa-untappd:before {
+  content: "\f405"; }
+
+.sys-icon.upload:before, .fa-upload:before {
+  content: "\f093"; }
+
+.sys-icon.usb:before, .fa-usb:before {
+  content: "\f287"; }
+
+.sys-icon.usd-circle:before, .fa-usd-circle:before {
+  content: "\f2e8"; }
+
+.sys-icon.usd-square:before, .fa-usd-square:before {
+  content: "\f2e9"; }
+
+.sys-icon.user:before, .fa-user:before {
+  content: "\f007"; }
+
+.sys-icon.user-alt:before, .fa-user-alt:before {
+  content: "\f406"; }
+
+.sys-icon.user-alt-slash:before, .fa-user-alt-slash:before {
+  content: "\f4fa"; }
+
+.sys-icon.user-astronaut:before, .fa-user-astronaut:before {
+  content: "\f4fb"; }
+
+.sys-icon.user-check:before, .fa-user-check:before {
+  content: "\f4fc"; }
+
+.sys-icon.user-circle:before, .fa-user-circle:before {
+  content: "\f2bd"; }
+
+.sys-icon.user-clock:before, .fa-user-clock:before {
+  content: "\f4fd"; }
+
+.sys-icon.user-cog:before, .fa-user-cog:before {
+  content: "\f4fe"; }
+
+.sys-icon.user-edit:before, .fa-user-edit:before {
+  content: "\f4ff"; }
+
+.sys-icon.user-friends:before, .fa-user-friends:before {
+  content: "\f500"; }
+
+.sys-icon.user-graduate:before, .fa-user-graduate:before {
+  content: "\f501"; }
+
+.sys-icon.user-lock:before, .fa-user-lock:before {
+  content: "\f502"; }
+
+.sys-icon.user-md:before, .fa-user-md:before {
+  content: "\f0f0"; }
+
+.sys-icon.user-minus:before, .fa-user-minus:before {
+  content: "\f503"; }
+
+.sys-icon.user-ninja:before, .fa-user-ninja:before {
+  content: "\f504"; }
+
+.sys-icon.user-plus:before, .fa-user-plus:before {
+  content: "\f234"; }
+
+.sys-icon.user-secret:before, .fa-user-secret:before {
+  content: "\f21b"; }
+
+.sys-icon.user-shield:before, .fa-user-shield:before {
+  content: "\f505"; }
+
+.sys-icon.user-slash:before, .fa-user-slash:before {
+  content: "\f506"; }
+
+.sys-icon.user-tag:before, .fa-user-tag:before {
+  content: "\f507"; }
+
+.sys-icon.user-tie:before, .fa-user-tie:before {
+  content: "\f508"; }
+
+.sys-icon.user-times:before, .fa-user-times:before {
+  content: "\f235"; }
+
+.sys-icon.users:before, .fa-users:before {
+  content: "\f0c0"; }
+
+.sys-icon.users-cog:before, .fa-users-cog:before {
+  content: "\f509"; }
+
+.sys-icon.ussunnah:before, .fa-ussunnah:before {
+  content: "\f407"; }
+
+.sys-icon.utensil-fork:before, .fa-utensil-fork:before {
+  content: "\f2e3"; }
+
+.sys-icon.utensil-knife:before, .fa-utensil-knife:before {
+  content: "\f2e4"; }
+
+.sys-icon.utensil-spoon:before, .fa-utensil-spoon:before {
+  content: "\f2e5"; }
+
+.sys-icon.utensils:before, .fa-utensils:before {
+  content: "\f2e7"; }
+
+.sys-icon.utensils-alt:before, .fa-utensils-alt:before {
+  content: "\f2e6"; }
+
+.sys-icon.vaadin:before, .fa-vaadin:before {
+  content: "\f408"; }
+
+.sys-icon.venus:before, .fa-venus:before {
+  content: "\f221"; }
+
+.sys-icon.venus-double:before, .fa-venus-double:before {
+  content: "\f226"; }
+
+.sys-icon.venus-mars:before, .fa-venus-mars:before {
+  content: "\f228"; }
+
+.sys-icon.viacoin:before, .fa-viacoin:before {
+  content: "\f237"; }
+
+.sys-icon.viadeo:before, .fa-viadeo:before {
+  content: "\f2a9"; }
+
+.sys-icon.viadeo-square:before, .fa-viadeo-square:before {
+  content: "\f2aa"; }
+
+.sys-icon.vial:before, .fa-vial:before {
+  content: "\f492"; }
+
+.sys-icon.vials:before, .fa-vials:before {
+  content: "\f493"; }
+
+.sys-icon.viber:before, .fa-viber:before {
+  content: "\f409"; }
+
+.sys-icon.video:before, .fa-video:before {
+  content: "\f03d"; }
+
+.sys-icon.video-plus:before, .fa-video-plus:before {
+  content: "\f4e1"; }
+
+.sys-icon.video-slash:before, .fa-video-slash:before {
+  content: "\f4e2"; }
+
+.sys-icon.vimeo:before, .fa-vimeo:before {
+  content: "\f40a"; }
+
+.sys-icon.vimeo-square:before, .fa-vimeo-square:before {
+  content: "\f194"; }
+
+.sys-icon.vimeo-v:before, .fa-vimeo-v:before {
+  content: "\f27d"; }
+
+.sys-icon.vine:before, .fa-vine:before {
+  content: "\f1ca"; }
+
+.sys-icon.vk:before, .fa-vk:before {
+  content: "\f189"; }
+
+.sys-icon.vnv:before, .fa-vnv:before {
+  content: "\f40b"; }
+
+.sys-icon.volleyball-ball:before, .fa-volleyball-ball:before {
+  content: "\f45f"; }
+
+.sys-icon.volume-down:before, .fa-volume-down:before {
+  content: "\f027"; }
+
+.sys-icon.volume-mute:before, .fa-volume-mute:before {
+  content: "\f2e2"; }
+
+.sys-icon.volume-off:before, .fa-volume-off:before {
+  content: "\f026"; }
+
+.sys-icon.volume-up:before, .fa-volume-up:before {
+  content: "\f028"; }
+
+.sys-icon.vuejs:before, .fa-vuejs:before {
+  content: "\f41f"; }
+
+.sys-icon.walking:before, .fa-walking:before {
+  content: "\f554"; }
+
+.sys-icon.wallet:before, .fa-wallet:before {
+  content: "\f555"; }
+
+.sys-icon.warehouse:before, .fa-warehouse:before {
+  content: "\f494"; }
+
+.sys-icon.warehouse-alt:before, .fa-warehouse-alt:before {
+  content: "\f495"; }
+
+.sys-icon.watch:before, .fa-watch:before {
+  content: "\f2e1"; }
+
+.sys-icon.weibo:before, .fa-weibo:before {
+  content: "\f18a"; }
+
+.sys-icon.weight:before, .fa-weight:before {
+  content: "\f496"; }
+
+.sys-icon.weixin:before, .fa-weixin:before {
+  content: "\f1d7"; }
+
+.sys-icon.whatsapp:before, .fa-whatsapp:before {
+  content: "\f232"; }
+
+.sys-icon.whatsapp-square:before, .fa-whatsapp-square:before {
+  content: "\f40c"; }
+
+.sys-icon.wheelchair:before, .fa-wheelchair:before {
+  content: "\f193"; }
+
+.sys-icon.whistle:before, .fa-whistle:before {
+  content: "\f460"; }
+
+.sys-icon.whmcs:before, .fa-whmcs:before {
+  content: "\f40d"; }
+
+.sys-icon.wifi:before, .fa-wifi:before {
+  content: "\f1eb"; }
+
+.sys-icon.wikipedia-w:before, .fa-wikipedia-w:before {
+  content: "\f266"; }
+
+.sys-icon.window:before, .fa-window:before {
+  content: "\f40e"; }
+
+.sys-icon.window-alt:before, .fa-window-alt:before {
+  content: "\f40f"; }
+
+.sys-icon.window-close:before, .fa-window-close:before {
+  content: "\f410"; }
+
+.sys-icon.window-maximize:before, .fa-window-maximize:before {
+  content: "\f2d0"; }
+
+.sys-icon.window-minimize:before, .fa-window-minimize:before {
+  content: "\f2d1"; }
+
+.sys-icon.window-restore:before, .fa-window-restore:before {
+  content: "\f2d2"; }
+
+.sys-icon.windows:before, .fa-windows:before {
+  content: "\f17a"; }
+
+.sys-icon.wine-glass:before, .fa-wine-glass:before {
+  content: "\f4e3"; }
+
+.sys-icon.wolf-pack-battalion:before, .fa-wolf-pack-battalion:before {
+  content: "\f514"; }
+
+.sys-icon.won-sign:before, .fa-won-sign:before {
+  content: "\f159"; }
+
+.sys-icon.wordpress:before, .fa-wordpress:before {
+  content: "\f19a"; }
+
+.sys-icon.wordpress-simple:before, .fa-wordpress-simple:before {
+  content: "\f411"; }
+
+.sys-icon.wpbeginner:before, .fa-wpbeginner:before {
+  content: "\f297"; }
+
+.sys-icon.wpexplorer:before, .fa-wpexplorer:before {
+  content: "\f2de"; }
+
+.sys-icon.wpforms:before, .fa-wpforms:before {
+  content: "\f298"; }
+
+.sys-icon.wrench:before, .fa-wrench:before {
+  content: "\f0ad"; }
+
+.sys-icon.x-ray:before, .fa-x-ray:before {
+  content: "\f497"; }
+
+.sys-icon.xbox:before, .fa-xbox:before {
+  content: "\f412"; }
+
+.sys-icon.xing:before, .fa-xing:before {
+  content: "\f168"; }
+
+.sys-icon.xing-square:before, .fa-xing-square:before {
+  content: "\f169"; }
+
+.sys-icon.y-combinator:before, .fa-y-combinator:before {
+  content: "\f23b"; }
+
+.sys-icon.yahoo:before, .fa-yahoo:before {
+  content: "\f19e"; }
+
+.sys-icon.yandex:before, .fa-yandex:before {
+  content: "\f413"; }
+
+.sys-icon.yandex-international:before, .fa-yandex-international:before {
+  content: "\f414"; }
+
+.sys-icon.yelp:before, .fa-yelp:before {
+  content: "\f1e9"; }
+
+.sys-icon.yen-sign:before, .fa-yen-sign:before {
+  content: "\f157"; }
+
+.sys-icon.yoast:before, .fa-yoast:before {
+  content: "\f2b1"; }
+
+.sys-icon.youtube:before, .fa-youtube:before {
+  content: "\f167"; }
+
+.sys-icon.youtube-square:before, .fa-youtube-square:before {
+  content: "\f431"; }
+

BIN
modules/boonex/fontawesome/template/fonts/fa-brands-400.eot


Plik diff jest za duży
+ 29 - 0
modules/boonex/fontawesome/template/fonts/fa-brands-400.svg


BIN
modules/boonex/fontawesome/template/fonts/fa-brands-400.ttf


BIN
modules/boonex/fontawesome/template/fonts/fa-brands-400.woff


BIN
modules/boonex/fontawesome/template/fonts/fa-brands-400.woff2


BIN
modules/boonex/fontawesome/template/fonts/fa-light-300.eot


Plik diff jest za duży
+ 47 - 0
modules/boonex/fontawesome/template/fonts/fa-light-300.svg


BIN
modules/boonex/fontawesome/template/fonts/fa-light-300.ttf


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików