utils.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. window.oMUtils = (function($) {
  2. let mixedMedia = false,
  3. sScreenMode = false,
  4. fUpdateScreenMode = () => {
  5. mixedMedia = $("html").attr('class').match(/.*bx-media-([^\d\s]+)/i);
  6. sScreenMode = !(mixedMedia === null || !Array.isArray(mixedMedia) || typeof mixedMedia[1] === 'undefined') && mixedMedia[1];
  7. };
  8. $(document).ready(fUpdateScreenMode);
  9. return {
  10. addBubble: (oData) => {
  11. const { selector, count_new, code } = oData;
  12. const sSelectorAddon = '.bx-menu-item-addon';
  13. //--- Update Child Menu Item
  14. if( selector ) {
  15. const oMenuItem = $(selector);
  16. const oMenuItemAddon = oMenuItem.find(sSelectorAddon);
  17. if(oMenuItemAddon.length > 0)
  18. oMenuItemAddon.html(count_new);
  19. else
  20. oMenuItem.append(code.replace('{count}', count_new));
  21. if(parseInt(count_new) > 0)
  22. oMenuItemAddon.show();
  23. else
  24. oMenuItemAddon.hide();
  25. }
  26. },
  27. showConferenceWindow: (sUrl, oOptions = {}) => {
  28. const oPopupOptions = Object.assign({
  29. id: { force: true, value: 'bx-messenger-vc-call' },
  30. url: sUrl,
  31. onHide: () => $(document).trigger($.Event('hideConferenceWindow')),
  32. onShow: () => $(document).trigger($.Event('showConferenceWindow')),
  33. closeOnOuterClick: true,
  34. removeOnClose: true,
  35. }, oOptions);
  36. $(window).dolPopupAjax(oPopupOptions);
  37. },
  38. onSaveGroup: (oElement) => {
  39. const oForm = $(oElement).closest('form'),
  40. iGroupId = $("[name='id']", oForm).val(),
  41. sName = $("[name='name']", oForm).val(),
  42. sDesc = $("[name='desc']", oForm).val(),
  43. sPrivacy = $("[name='allow_view_to']", oForm).val();
  44. $.post('modules/?r=messenger/save_group', { id: iGroupId, name: sName, desc: sDesc, allow_view_to: sPrivacy }, function(oData){
  45. const { code } = oData;
  46. if (code)
  47. processJsonData(oData);
  48. else
  49. {
  50. $(oElement).closest('.bx-popup-applied:visible').dolPopupHide();
  51. if (!code) {
  52. bx_loading($('#bx-messenger-left-nav-menu'), true);
  53. $.post('modules/?r=messenger/load_groups_list', {}, function ({code, content}) {
  54. if (content.length)
  55. $('#bx-messenger-left-nav-menu').replaceWith(content);
  56. else
  57. bx_loading($('#bx-messenger-left-nav-menu'), false);
  58. }, 'json');
  59. }
  60. }
  61. }, 'json');
  62. },
  63. onCreateGroup: (iGroupId) => $.post('modules/?r=messenger/get_create_group_form', { group: iGroupId }, (oData) => processJsonData(oData), 'json'),
  64. getBroadcastFields: () => {
  65. const { createConvoForm } = window.oMessengerSelectors.CREATE_TALK;
  66. const aFields = Object.create(null);
  67. $(createConvoForm).find('input:not([name="csrf_token"]),select,textarea').each(function(){
  68. const sType = $(this).prop('type'),
  69. sName = $(this).prop('name').replace(/\[\]/, '');
  70. switch(sType) {
  71. case "checkbox":
  72. if ($(this).is(':checked')) {
  73. if (typeof aFields[sName] !== 'undefined')
  74. aFields[sName].push($(this).val());
  75. else
  76. aFields[sName] = [$(this).val()];
  77. }
  78. break;
  79. case "text":
  80. case "textarea":
  81. case "hidden":
  82. if ($(this).val().length && sName.length)
  83. aFields[sName] = $(this).val();
  84. break;
  85. default:
  86. const sInput = $(this).prop('tagName').toLowerCase();
  87. if (sInput === "select") {
  88. if ($(this).prop('multiple')){
  89. const aList = [];
  90. $(this).find('option:selected').each(function(){
  91. aList.push($(this).val());
  92. });
  93. aFields[sName] = aList;
  94. } else
  95. aFields[sName] = $(this).val();
  96. }
  97. }
  98. });
  99. return aFields;
  100. },
  101. onCalculateProfiles: () => {
  102. const { selectedUsersArea, selectedUserElement } = window.oMessengerSelectors.CREATE_TALK,
  103. aFields = window.oMUtils.getBroadcastFields();
  104. const aManuallList = $(selectedUserElement, selectedUsersArea).map(function(){
  105. return $(this).data('id');
  106. }).get();
  107. if (Object.keys(aFields).length || aManuallList.length)
  108. $.post('modules/?r=messenger/calculate_profiles', { data: aFields, manually: aManuallList }, (oData) => {
  109. processJsonData(oData);
  110. }, 'json');
  111. },
  112. toggleList: function(oObject){
  113. const oDropDown =$(oObject).next();
  114. return !oDropDown.is(':visible') ? oDropDown.fadeIn() : oDropDown.fadeOut();
  115. },
  116. getScreenMode: function() {
  117. fUpdateScreenMode();
  118. return sScreenMode;
  119. },
  120. isMobile: function(){
  121. return $(window).width() <= 768;
  122. },
  123. isMobileDevice: function(){
  124. return (
  125. /(android|bb\d+|meego|UNA).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i.test(navigator.userAgent||navigator.vendor||window.opera)
  126. ||
  127. /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test((navigator.userAgent||navigator.vendor||window.opera).substr(0,4))
  128. );
  129. },
  130. isUnaMobileApp: function(){
  131. return 'undefined' !== typeof(window.ReactNativeWebView) &&
  132. 'undefined' !== typeof(window.glBxNexusApp) &&
  133. parseInt(window.glBxNexusApp.ver.split('.').join('')) >= 140;
  134. }
  135. }
  136. })(jQuery);