PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/support/admin/ticket_group_edit.php

https://gitlab.com/alexprowars/bitrix
PHP | 299 lines | 253 code | 45 blank | 1 comment | 36 complexity | f78eb8f5575bb3a5eff127161ff1681a MD5 | raw file
  1. <?
  2. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
  3. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/support/prolog.php");
  4. CModule::IncludeModule('support');
  5. IncludeModuleLangFile(__FILE__);
  6. $FMUTagName = 'USER_IDS';
  7. $FMUFormID = 'form1';
  8. $bDemo = CTicket::IsDemo();
  9. $bAdmin = CTicket::IsAdmin();
  10. if(!$bAdmin && !$bDemo)
  11. $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  12. $LIST_URL = '/bitrix/admin/ticket_group_list.php';
  13. $ID = intval($ID);
  14. $message = false;
  15. if (($save <> '' || $apply <> '') && $REQUEST_METHOD=='POST' && $bAdmin && check_bitrix_sessid())
  16. {
  17. $obSUG = new CSupportUserGroup();
  18. $bOK = false;
  19. $new = false;
  20. $arParams = array(
  21. 'NAME' => $_POST['NAME'],
  22. 'SORT' => intval($_POST['SORT']),
  23. 'XML_ID' => $_POST['XML_ID'],
  24. 'IS_TEAM_GROUP' => $_POST['IS_TEAM_GROUP'],
  25. );
  26. if ($ID > 0)
  27. {
  28. $bOK = $obSUG->Update($ID, $arParams);
  29. }
  30. else
  31. {
  32. if ($ID = $obSUG->Add($arParams))
  33. {
  34. $bOK = true;
  35. $new = true;
  36. }
  37. }
  38. if ($bOK && isset($_POST[$FMUTagName]['VALS']) && is_array($_POST[$FMUTagName]['VALS']))
  39. {
  40. $UIDS = array_map('intval', $_POST[$FMUTagName]['VALS']);
  41. $UIDS = array_unique($UIDS);
  42. $USERS = array();
  43. foreach ($UIDS as $k => $v)
  44. {
  45. $USERS[] = array(
  46. 'USER_ID' => $v,
  47. 'CAN_VIEW_GROUP_MESSAGES' => $_POST[$FMUTagName]['CHECKS'][$k],
  48. 'CAN_MAIL_GROUP_MESSAGES' => $_POST[$FMUTagName]['MAIL'][$k],
  49. 'CAN_MAIL_UPDATE_GROUP_MESSAGES' => $_POST[$FMUTagName]['MAIL_UPDATE'][$k]
  50. );
  51. }
  52. $errors = CSupportUser2UserGroup::SetGroupUsers($ID, $USERS);
  53. $bOK = count($errors) <= 0;
  54. if (!$bOK)
  55. {
  56. $APPLICATION->ThrowException(implode('<br>', $errors));
  57. }
  58. }
  59. if ($bOK)
  60. {
  61. if ($save <> '') LocalRedirect($LIST_URL . '?lang=' . LANG);
  62. elseif ($new) LocalRedirect($APPLICATION->GetCurPage() . '?ID='.$ID. '&lang='.LANG.'&tabControl_active_tab='.urlencode($tabControl_active_tab));
  63. }
  64. else
  65. {
  66. if ($e = $APPLICATION->GetException())
  67. $message = new CAdminMessage(GetMessage('SUP_GE_ERROR'), $e);
  68. }
  69. }
  70. $rsGroups = CSupportUserGroup::GetList(false, array('ID' => $ID));
  71. $arGroup = $rsGroups->GetNext();
  72. if (!$arGroup)
  73. {
  74. $ID = 0;
  75. }
  76. $arGroupUsers = array();
  77. if ($arGroup)
  78. {
  79. $rs_ug = CSupportUser2UserGroup::GetList(false, array('GROUP_ID' => $ID));
  80. while ($ar_ug = $rs_ug->GetNext())
  81. {
  82. $arGroupUsers[] = array(
  83. 'USER_ID' => $ar_ug['USER_ID'],
  84. 'CAN_VIEW_GROUP_MESSAGES' => $ar_ug['CAN_VIEW_GROUP_MESSAGES'],
  85. 'CAN_MAIL_GROUP_MESSAGES' => $ar_ug['CAN_MAIL_GROUP_MESSAGES'],
  86. 'CAN_MAIL_UPDATE_GROUP_MESSAGES' => $ar_ug['CAN_MAIL_UPDATE_GROUP_MESSAGES'],
  87. 'USER_NAME' => '[<a title="'.GetMessage("MAIN_USER_PROFILE").'" href="user_edit.php?ID='.$ar_ug["USER_ID"].'&amp;lang='.LANG.'">'.$ar_ug["USER_ID"].'</a>] ('.$ar_ug["LOGIN"].') '.$ar_ug["FIRST_NAME"].' '.$ar_ug["LAST_NAME"],
  88. );
  89. }
  90. }
  91. $arGroupUsers[] = array('USER_ID' => '');
  92. $arGroupUsers[] = array('USER_ID' => '');
  93. $arGroupUsers[] = array('USER_ID' => '');
  94. if ($ID > 0)
  95. {
  96. $APPLICATION->SetTitle(GetMessage('SUP_GE_TITLE_EDIT', array('%GROUP_NAME%' => $arGroup['~NAME'])));
  97. }
  98. else
  99. {
  100. $APPLICATION->SetTitle(GetMessage('SUP_GE_TITLE_NEW'));
  101. }
  102. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  103. $aMenu = array(
  104. array(
  105. 'ICON' => 'btn_list',
  106. 'TEXT' => GetMessage('SUP_GE_GROUPS_LIST'),
  107. 'LINK' => $LIST_URL . '?lang=' . LANG
  108. )
  109. );
  110. $context = new CAdminContextMenu($aMenu);
  111. $context->Show();
  112. if ($message)
  113. echo $message->Show();
  114. $aTabs = array();
  115. $aTabs[] = array(
  116. 'DIV' => 'edit1',
  117. 'TAB' => GetMessage('SUP_GE_GROUP'),
  118. 'TITLE'=>GetMessage('SUP_GE_GROUP_TITLE')
  119. );
  120. $aTabs[] = array(
  121. 'DIV' => 'edit2',
  122. 'TAB' => GetMessage('SUP_GE_GROUP_USERS'),
  123. 'TITLE'=>GetMessage('SUP_GE_GROUP_USERS_TITLE')
  124. );
  125. $tabControl = new CAdminTabControl('tabControl', $aTabs, true, true);
  126. ?>
  127. <form name="<?=$FMUFormID?>" method="POST" action="<?=$APPLICATION->GetCurPage()?>?lang=<?=LANGUAGE_ID?>&ID=<?=$ID?>">
  128. <?=bitrix_sessid_post()?>
  129. <input type="hidden" name="ID" value="<?=$ID?>">
  130. <input type="hidden" name="lang" value="<?=LANGUAGE_ID?>">
  131. <?$tabControl->Begin();?>
  132. <?$tabControl->BeginNextTab();?>
  133. <tr class="adm-detail-required-field">
  134. <td align="right" width="40%"><?=GetMessage('SUP_GE_NAME')?>:</td>
  135. <td width="60%"><input type="text" name="NAME" size="40" maxlength="255" value="<?=$arGroup['NAME']?>"></td>
  136. </tr>
  137. <tr>
  138. <td align="right"><?=GetMessage('SUP_GE_SORT')?>:</td>
  139. <td><input type="text" name="SORT" size="5" maxlength="255" value="<?=$arGroup['SORT']?>"></td>
  140. </tr>
  141. <tr>
  142. <td align="right"><?=GetMessage('SUP_GE_XML_ID')?>:</td>
  143. <td><input type="text" name="XML_ID" size="40" maxlength="255" value="<?=$arGroup['XML_ID']?>"></td>
  144. </tr>
  145. <tr>
  146. <td align="right"><?=GetMessage('SUP_GE_IS_TEAM_GROUP')?>:</td>
  147. <td><input type="checkbox" name="IS_TEAM_GROUP" value="Y"<?if ($arGroup['IS_TEAM_GROUP'] == 'Y'){?> checked<?}?>></td>
  148. </tr>
  149. <?$tabControl->BeginNextTab();?>
  150. <tr valign="top">
  151. <td align="right"><?=GetMessage('SUP_GE_GROUP_USERS')?>:</td>
  152. <td>
  153. <table id="FMUtab">
  154. <tr>
  155. <td><?=GetMessage('SUP_GE_USER')?></td>
  156. <td style="padding-right: 10px"><?=GetMessage('SUP_GE_CAN_VIEW')?></td>
  157. <td><?=GetMessage('SUP_GE_CAN_MAIL')?></td>
  158. <td><?=GetMessage('SUP_GE_CAN_MAIL_UPDATE')?></td>
  159. </tr>
  160. <?
  161. $i = 0;
  162. $UIDS = array();
  163. foreach ($arGroupUsers as $val)
  164. {
  165. $UIDS[$i] = '';
  166. $UserPr = ( (string) $val['USER_ID'] <> '' );
  167. if( $UserPr ) $UIDS[$i] = intval($val['USER_ID']);
  168. $cVgm = ( $val['CAN_VIEW_GROUP_MESSAGES'] == "Y" || !$UserPr ) ? " checked" : "";
  169. $cMgm = ( $val['CAN_MAIL_GROUP_MESSAGES'] == "Y" || !$UserPr ) ? " checked" : "";
  170. $cMUgm = ( $val['CAN_MAIL_UPDATE_GROUP_MESSAGES'] == "Y" || !$UserPr ) ? " checked" : "";
  171. ?>
  172. <tr>
  173. <td>
  174. <input type="text" id="<?=$FMUTagName?>[VALS][<?=$i?>]" name="<?=$FMUTagName?>[VALS][<?=$i?>]" value="<?=$UIDS[$i]?>" size="5">
  175. <iframe style="width:0px; height:0px; border:0px" src="javascript:''" name="FMUhiddenframe<?=$i?>" id="FMUhiddenframe<?=$i?>"></iframe>
  176. <input class="" type="button" name="FMUButton<?=$i?>" id="FMUButton<?=$i?>" OnClick="window.open('/bitrix/admin/user_search.php?lang=<?=LANGUAGE_ID?>&FN=<?=$FMUFormID?>&FC=<?=urlencode($FMUTagName.'[VALS]['.$i.']')?>', '', 'scrollbars=yes,resizable=yes,width=760,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 760)/2-5));" value="...">
  177. <span id="div_FMUdivUN<?=$i?>"><?=$val['USER_NAME']?></span>
  178. </td>
  179. <td><input type="checkbox" name="<?=$FMUTagName?>[CHECKS][<?=$i?>]"<?=$cVgm?> value="Y"></td>
  180. <td><input type="checkbox" name="<?=$FMUTagName?>[MAIL][<?=$i?>]"<?=$cMgm?> value="Y"></td>
  181. <td><input type="checkbox" name="<?=$FMUTagName?>[MAIL_UPDATE][<?=$i?>]"<?=$cMUgm?> value="Y"></td>
  182. </tr>
  183. <?
  184. $i++;
  185. }
  186. ?>
  187. <tr>
  188. <td colspan="2"><input type="button" value="<?=GetMessage('SUP_GE_ADD_MORE_USERS')?>" onclick="window.open('/bitrix/admin/user_search.php?lang=<?=LANGUAGE_ID?>&JSFUNC=usergroups', '', 'scrollbars=yes,resizable=yes,width=760,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 760)/2-5));"></td>
  189. </tr>
  190. </table>
  191. <script type="text/javascript">
  192. var rowCounter = <?=intval($i)?>;
  193. var UIDS = new Array();
  194. <?foreach ($UIDS as $k => $v){?>
  195. UIDS[<?=$k?>] = '<?=$v?>';
  196. <?}?>
  197. function SUVUpdateUserNames()
  198. {
  199. var str;
  200. var div;
  201. for(i in UIDS)
  202. {
  203. //alert(document.<?echo $FMUFormID;?>["<?=$FMUTagName?>[VALS]["+String(i)+"]"].value);
  204. str = document.<?echo $FMUFormID;?>["<?=$FMUTagName?>[VALS]["+String(i)+"]"].value;
  205. if(str.length > 0)
  206. {
  207. if(String(UIDS[i]) != str)
  208. {
  209. div = document.getElementById('div_FMUdivUN'+String(i));
  210. div.innerHTML = '<i><?=GetMessage('MAIN_WAIT')?></i>';
  211. document.getElementById("FMUhiddenframe"+String(i)).src='/bitrix/admin/get_user.php?ID=' + str + '&strName=FMUdivUN'+String(i)+'&lang=<?=LANG?><?=(defined("ADMIN_SECTION") && ADMIN_SECTION===true?"&admin_section=Y":"")?>';
  212. UIDS[i] = str;
  213. }
  214. }
  215. }
  216. setTimeout(function(){SUVUpdateUserNames()},1000);
  217. }
  218. SUVUpdateUserNames();
  219. function SUVusergroups(USER_ID)
  220. {
  221. var oTbl=document.getElementById('FMUtab');
  222. var sRowCounter = String(rowCounter);
  223. var newRow = oTbl.insertRow(oTbl.rows.length - 1);
  224. var newCell1 = newRow.insertCell(-1);
  225. newCell1.innerHTML = '<input type="text" id="<?=$FMUTagName?>[VALS]['+sRowCounter+']" name="<?=$FMUTagName?>[VALS]['+sRowCounter+']" value="'+String(USER_ID)+'" size="5"> ' +
  226. '<iframe style="width:0px; height:0px; border:0px" src="javascript:\'\'" name="FMUhiddenframe'+sRowCounter+'" id="FMUhiddenframe'+sRowCounter+'"></iframe> ' +
  227. '<input class="" type="button" name="FMUButton'+sRowCounter+'" id="FMUButton'+sRowCounter+'" OnClick="window.open(\'/bitrix/admin/user_search.php?lang=<?=LANGUAGE_ID?>&FN=<?=$FMUFormID?>&FC=<?=urlencode($FMUTagName)?>%5BVALS%5D%5B'+sRowCounter+'%5D\', \'\', \'scrollbars=yes,resizable=yes,width=760,height=500,top=\'+Math.floor((screen.height - 560)/2-14)+\',left=\'+Math.floor((screen.width - 760)/2-5));" value="..."> ' +
  228. '<span id="div_FMUdivUN'+sRowCounter+'"></span>';
  229. var newCell2 = newRow.insertCell(-1);
  230. newCell2.innerHTML = '<input type="checkbox" name="<?=$FMUTagName?>[CHECKS]['+sRowCounter+']" value="Y" checked>';
  231. var newCell3 = newRow.insertCell(-1);
  232. newCell3.innerHTML = '<input type="checkbox" name="<?=$FMUTagName?>[MAIL]['+sRowCounter+']" value="Y" checked>';
  233. var newCell4 = newRow.insertCell(-1);
  234. newCell4.innerHTML = '<input type="checkbox" name="<?=$FMUTagName?>[MAIL_UPDATE]['+sRowCounter+']" value="Y" checked>';
  235. BX.adminPanel.modifyFormElements(newCell2);
  236. BX.adminPanel.modifyFormElements(newCell3);
  237. BX.adminPanel.modifyFormElements(newCell4);
  238. UIDS[rowCounter] = '';
  239. rowCounter++;
  240. }
  241. </script>
  242. </td>
  243. </tr>
  244. <?
  245. $tabControl->Buttons(Array("disabled"=>!$bAdmin, 'back_url' => $LIST_URL . '?lang=' . LANGUAGE_ID));
  246. $tabControl->End();
  247. ?>
  248. </form>
  249. <?echo BeginNote();?>
  250. <span style="font-weight: bold;"><?echo GetMessage("REQUIRED_FIELDS")?></span>
  251. <?echo EndNote();?>
  252. <?
  253. require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
  254. ?>