PageRenderTime 29ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/workflow/admin/workflow_history_list.php

https://gitlab.com/alexprowars/bitrix
PHP | 338 lines | 313 code | 25 blank | 0 comment | 29 complexity | ced3a9df67aef4770c65b3226922e073 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/workflow/prolog.php");
  4. $WORKFLOW_RIGHT = $APPLICATION->GetGroupRight("workflow");
  5. if($WORKFLOW_RIGHT=="D")
  6. $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
  7. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/workflow/include.php");
  8. IncludeModuleLangFile(__FILE__);
  9. $sTableID = "t_wf_history_list";
  10. $oSort = new CAdminSorting($sTableID, "s_date_modify", "desc");
  11. $lAdmin = new CAdminList($sTableID, $oSort);
  12. $arFilterFields = array(
  13. "find",
  14. "find_type",
  15. "find_id",
  16. "find_id_exact_match",
  17. "find_document_id",
  18. "find_document_id_exact_match",
  19. "find_modify_1",
  20. "find_modify_2",
  21. "find_modified_user",
  22. "find_modified_user_exact_match",
  23. "find_site_id",
  24. "find_filename",
  25. "find_filename_exact_match",
  26. "find_title",
  27. "find_title_exact_match",
  28. "find_body",
  29. "find_body_exact_match",
  30. "find_status",
  31. "find_status_exact_match",
  32. "find_status_id",
  33. "FILTER_logic",
  34. );
  35. $lAdmin->InitFilter($arFilterFields);
  36. $filter = new CAdminFilter(
  37. $sTableID."_filter_id",
  38. array(
  39. "ID",
  40. GetMessage('FLOW_F_DOCUMENT'),
  41. GetMessage("FLOW_F_DATE_MODIFY"),
  42. GetMessage('FLOW_F_MODIFIED_BY'),
  43. GetMessage('FLOW_SITE_ID'),
  44. GetMessage('FLOW_F_FILENAME'),
  45. GetMessage('FLOW_F_TITLE'),
  46. GetMessage('FLOW_F_BODY'),
  47. GetMessage('FLOW_F_STATUS'),
  48. GetMessage('FLOW_F_LOGIC'),
  49. )
  50. );
  51. InitBVar($find_id_exact_match);
  52. InitBVar($find_document_id_exact_match);
  53. InitBVar($find_modified_user_exact_match);
  54. InitBVar($find_filename_exact_match);
  55. InitBVar($find_title_exact_matc);
  56. InitBVar($find_body_exact_match);
  57. InitBVar($find_status_exact_match);
  58. $arFilter = array(
  59. "ID" => $find_id,
  60. "DOCUMENT_ID" => $find_document_id,
  61. "DATE_MODIFY_1" => $find_modify_1,
  62. "DATE_MODIFY_2" => $find_modify_2,
  63. "MODIFIED_USER" => ($find_type == "modified_by" && $find <> '' ? $find : $find_modified_user),
  64. "SITE_ID" => $find_site_id,
  65. "FILENAME" => $find_filename,
  66. "TITLE" => ($find_type == "title" && $find <> '' ? $find : $find_title),
  67. "BODY" => ($find_type == "body" && $find <> '' ? $find : $find_body),
  68. "STATUS" => $find_status,
  69. "STATUS_ID" => $find_status_id,
  70. "ID_EXACT_MATCH" => $find_id_exact_match,
  71. "DOCUMENT_ID_EXACT_MATCH" => $find_document_id_exact_match,
  72. "MODIFIED_USER_EXACT_MATCH" => $find_modified_user_exact_match,
  73. "FILENAME_EXACT_MATCH" => $find_filename_exact_match,
  74. "TITLE_EXACT_MATCH" => $find_title_exact_match,
  75. "BODY_EXACT_MATCH" => $find_body_exact_match,
  76. "STATUS_EXACT_MATCH" => $find_status_exact_match,
  77. );
  78. if ($arID = $lAdmin->GroupAction())
  79. {
  80. if ($_REQUEST['action_target'] == 'selected')
  81. {
  82. $rsData = CWorkflow::GetList('', '', $arFilter);
  83. while ($arRes = $rsData->Fetch())
  84. $arID[] = $arRes['ID'];
  85. }
  86. foreach ($arID as $ID)
  87. {
  88. $ID = intval($ID);
  89. if ($ID <= 0)
  90. continue;
  91. switch ($_REQUEST['action'])
  92. {
  93. case "delete":
  94. if ($WORKFLOW_RIGHT > "R" && CWorkflow::IsAdmin())
  95. {
  96. CWorkflow::DeleteHistory($ID);
  97. }
  98. break;
  99. }
  100. }
  101. }
  102. $arHeaders = array(
  103. array(
  104. "id" => "ID",
  105. "content" => "ID",
  106. "default" => false,
  107. "sort" => "s_id",
  108. ),
  109. array(
  110. "id" => "DOCUMENT_ID",
  111. "content" => GetMessage("FLOW_DOCUMENT"),
  112. "default" => false,
  113. "sort" => "s_document_id",
  114. ),
  115. array(
  116. "id" => "TIMESTAMP_X",
  117. "content" => GetMessage("FLOW_DATE_MODIFY"),
  118. "default" => true,
  119. "sort" => "s_date_modify",
  120. ),
  121. array(
  122. "id" => "MODIFIED_BY",
  123. "content" => GetMessage("FLOW_MODIFIED_BY"),
  124. "default" => true,
  125. "sort" => "s_modified_by",
  126. ),
  127. array(
  128. "id" => "SITE_ID",
  129. "content" => GetMessage("FLOW_SITE_ID"),
  130. "default" => true,
  131. "sort" => "s_site_id",
  132. ),
  133. array(
  134. "id" => "FILENAME",
  135. "content" => GetMessage("FLOW_FILENAME"),
  136. "default" => true,
  137. "sort" => "s_filename",
  138. ),
  139. array(
  140. "id" => "TITLE",
  141. "content" => GetMessage("FLOW_TITLE"),
  142. "default" => true,
  143. "sort" => "s_title",
  144. ),
  145. array(
  146. "id" => "STATUS_ID",
  147. "content" => GetMessage("FLOW_STATUS"),
  148. "default" => true,
  149. "sort" => "s_status",
  150. ),
  151. );
  152. $lAdmin->AddHeaders($arHeaders);
  153. global $by, $order;
  154. $rsData = CWorkflow::GetHistoryList($by, $order, $arFilter);
  155. $rsData = new CAdminResult($rsData, $sTableID);
  156. $rsData->NavStart(50);
  157. $lAdmin->NavText($rsData->GetNavPrint(GetMessage("FLOW_PAGES")));
  158. while ($arRes = $rsData->NavNext(true, "f_"))
  159. {
  160. $row = & $lAdmin->AddRow($f_ID, $arRes);
  161. if (CWorkflow::IsHaveEditRights($f_DOCUMENT_ID) && $f_DOCUMENT_ID > 0)
  162. $row->AddViewField("DOCUMENT_ID", '<a href="workflow_edit.php?lang='.LANG.'&ID='.$f_DOCUMENT_ID.'">'.$f_DOCUMENT_ID.'</a>');
  163. $row->AddViewField("MODIFIED_BY", '[<a title="'.GetMessage("FLOW_USER_ALT").'" href="user_edit.php?ID='.$f_MODIFIED_BY.'&lang='.LANG.'">'.$f_MODIFIED_BY.'</a>]&nbsp;'.$f_USER_NAME);
  164. $row->AddViewField("FILENAME", '<a href="'.$f_FILENAME.'">'.TruncateText($f_FILENAME, 45).'</a>');
  165. $row->AddViewField("STATUS_ID", '[<a title="'.GetMessage("FLOW_STATUS_ALT").'" href="workflow_status_edit.php?ID='.$f_STATUS_ID.'&lang='.LANG.'">'.$f_STATUS_ID.'</a>]&nbsp;'.$f_STATUS_TITLE);
  166. $arActions = array(
  167. array(
  168. "ICON" => "view",
  169. "DEFAULT" => "Y",
  170. "TEXT" => GetMessage("FLOW_VIEW"),
  171. "ACTION" => $lAdmin->ActionRedirect("workflow_history_view.php?lang=".LANG."&ID=".$f_ID),
  172. ),
  173. );
  174. if ($WORKFLOW_RIGHT > "R" && CWorkflow::IsAdmin())
  175. {
  176. $arActions[] = array(
  177. "SEPARATOR" => true,
  178. );
  179. $arActions[] = array(
  180. "ICON" => "delete",
  181. "TEXT" => GetMessage("FLOW_DELETE"),
  182. "ACTION" => "if(confirm('".GetMessage('FLOW_DELETE_CONFIRM')."')) ".$lAdmin->ActionDoGroup($f_ID, "delete"),
  183. );
  184. }
  185. $row->AddActions($arActions);
  186. }
  187. $lAdmin->AddFooter(array(
  188. array(
  189. "title" => GetMessage("MAIN_ADMIN_LIST_SELECTED"),
  190. "value" => $rsData->SelectedRowsCount(),
  191. ),
  192. array(
  193. "counter" => true,
  194. "title" => GetMessage("MAIN_ADMIN_LIST_CHECKED"),
  195. "value" => "0",
  196. ),
  197. ));
  198. if ($WORKFLOW_RIGHT > "R" && CWorkflow::IsAdmin())
  199. {
  200. $lAdmin->AddGroupActionTable(array(
  201. "delete" => GetMessage("MAIN_ADMIN_LIST_DELETE"),
  202. array(
  203. "action" => "Diff()",
  204. "value" => "compare",
  205. "type" => "button",
  206. "name" => GetMessage("FLOW_COMPARE"),
  207. ),
  208. ));
  209. }
  210. $aMenu = array(
  211. array(
  212. "ICON" => "btn_list",
  213. "TEXT" => GetMessage("FLOW_RECORDS_LIST"),
  214. "LINK" => "workflow_list.php?lang=".LANGUAGE_ID,
  215. "TITLE" => GetMessage("FLOW_RECORDS_LIST"),
  216. ),
  217. );
  218. $lAdmin->AddAdminContextMenu($aMenu);
  219. $lAdmin->CheckListMode();
  220. $APPLICATION->SetTitle(GetMessage("FLOW_PAGE_TITLE"));
  221. require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
  222. ?>
  223. <script>
  224. function Diff()
  225. {
  226. var selection = new Array();
  227. var j = 0;
  228. var inputs = document.getElementsByTagName('input');
  229. for(var i = 0; i < inputs.length; i++)
  230. {
  231. if(inputs[i].getAttribute("name") == 'ID[]')
  232. {
  233. var a = inputs[i].checked;
  234. if (a == true)
  235. {
  236. selection[j] = inputs[i].value;
  237. j++;
  238. }
  239. }
  240. }
  241. if(j < 2 || j > 2)
  242. {
  243. alert('<?echo GetMessageJS("FLOW_COMPARE_ALERT")?>');
  244. }
  245. else
  246. {
  247. window.location='workflow_history_view.php?lang=<?echo urlencode(LANG)?>&ID='+selection[0]+'&PREV_ID='+selection[1];
  248. }
  249. }
  250. </script>
  251. <form name="form1" method="GET" action="<?=$APPLICATION->GetCurPage()?>?">
  252. <?$filter->Begin();?>
  253. <tr>
  254. <td><b><?=GetMessage("MAIN_FIND")?>:</b></td>
  255. <td>
  256. <input type="text" size="25" name="find" value="<?echo htmlspecialcharsbx($find)?>" title="<?=GetMessage("MAIN_FIND_TITLE")?>">
  257. <select name="find_type">
  258. <option value="title"<?if($find_type=="title") echo " selected"?>><?=GetMessage('FLOW_F_TITLE')?></option>
  259. <option value="body"<?if($find_type=="body") echo " selected"?>><?=GetMessage('FLOW_F_BODY')?></option>
  260. <option value="modified_by"<?if($find_type=="modified_by") echo " selected"?>><?=GetMessage('FLOW_F_MODIFIED_BY')?></option>
  261. </select>
  262. </td>
  263. </tr>
  264. <tr>
  265. <td>ID:</td>
  266. <td><input type="text" name="find_id" size="47" value="<?echo htmlspecialcharsbx($find_id)?>"><?=ShowExactMatchCheckbox("find_id")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  267. </tr>
  268. <tr valign="center">
  269. <td nowrap><?=GetMessage("FLOW_F_DOCUMENT")?>:</td>
  270. <td nowrap><input type="text" name="find_document_id" size="47" value="<?echo htmlspecialcharsbx($find_document_id)?>"><?=ShowExactMatchCheckbox("find_document_id")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  271. </tr>
  272. <tr valign="center">
  273. <td nowrap><?echo GetMessage("FLOW_F_DATE_MODIFY").":"?></td>
  274. <td nowrap><?echo CalendarPeriod("find_modify_1", $find_modify_1, "find_modify_2", $find_modify_2, "form1", "Y")?></td>
  275. </tr>
  276. <tr valign="center">
  277. <td nowrap valign="top"><?=GetMessage("FLOW_F_MODIFIED_BY")?>:</td>
  278. <td nowrap><input type="text" name="find_modified_user" value="<?echo htmlspecialcharsbx($find_modified_user)?>" size="47"><?=ShowExactMatchCheckbox("find_modified_user")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  279. </tr>
  280. <tr>
  281. <td><?echo GetMessage("FLOW_SITE_ID")?>:</td>
  282. <td><?=CSite::SelectBox("find_site_id", $find_site_id, GetMessage("MAIN_ALL"));?></td>
  283. </tr>
  284. <tr valign="center">
  285. <td nowrap><?=GetMessage("FLOW_F_FILENAME")?>:</td>
  286. <td nowrap><input type="text" name="find_filename" value="<?echo htmlspecialcharsbx($find_filename)?>" size="47"><?=ShowExactMatchCheckbox("find_filename")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  287. </tr>
  288. <tr valign="center">
  289. <td nowrap><?=GetMessage("FLOW_F_TITLE")?>:</td>
  290. <td nowrap><input type="text" name="find_title" value="<?echo htmlspecialcharsbx($find_title)?>" size="47"><?=ShowExactMatchCheckbox("find_title")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  291. </tr>
  292. <tr valign="center">
  293. <td nowrap><?=GetMessage("FLOW_F_BODY")?>:</td>
  294. <td nowrap><input type="text" name="find_body" value="<?echo htmlspecialcharsbx($find_body)?>" size="47"><?=ShowExactMatchCheckbox("find_body")?>&nbsp;<?=ShowFilterLogicHelp()?></td>
  295. </tr>
  296. <tr valign="center">
  297. <td nowrap valign="top"><?=GetMessage("FLOW_F_STATUS")?>:</td>
  298. <td nowrap><input type="text" name="find_status" value="<?echo htmlspecialcharsbx($find_status)?>" size="47"><?=ShowExactMatchCheckbox("find_status")?>&nbsp;<?=ShowFilterLogicHelp()?><br><?
  299. echo SelectBox("find_status_id", CWorkflowStatus::GetDropDownList("Y"), GetMessage("MAIN_ALL"), htmlspecialcharsbx($find_status_id));
  300. ?></td>
  301. </tr>
  302. <?
  303. echo ShowLogicRadioBtn();
  304. $filter->Buttons(array(
  305. "table_id" => $sTableID,
  306. "url" => $APPLICATION->GetCurPage(),
  307. "form" => "form1",
  308. ));
  309. $filter->End();
  310. ?>
  311. </form>
  312. <?$lAdmin->DisplayList();?>
  313. <?require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>