v1.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace zin;
  3. class docList extends wg
  4. {
  5. /**
  6. * @var mixed[]
  7. */
  8. protected static $defineProps = array(
  9. 'data' => '?object', // 对象数据。
  10. 'mode' => '?string="edit"' // view还是edit模式。
  11. );
  12. public static function getPageJS()
  13. {
  14. return file_get_contents(__DIR__ . DS . 'js' . DS . 'v1.js');
  15. }
  16. protected function build()
  17. {
  18. global $app, $lang;
  19. $app->loadLang('task');
  20. $data = $this->prop('data');
  21. $mode = $this->prop('mode');
  22. $oldDocs = $app->control->dao->select('id,title,version')->from(TABLE_DOC)->where('id')->in($data->docs)->fetchAll('id');
  23. $docList = $app->control->loadModel('doc')->getMySpaceDocs('all', 'bykeyword', '', 'id_desc', null, '', $data->docs);
  24. $docs = array();
  25. foreach($docList as $doc) $docs[] = array('text' => $doc->title, 'value' => $doc->id);
  26. if($mode == 'edit')
  27. {
  28. $oldDocVersions = $app->control->dao->select('doc,version')->from(TABLE_DOCCONTENT)->where('doc')->in($data->docs)->fetchGroup('doc', 'version');
  29. $oldDocVersions = \json_decode(json_encode($oldDocVersions), true);
  30. foreach($oldDocVersions as $docID => $versions)
  31. {
  32. foreach($versions as $versionID => $version) $oldDocVersions[$docID][$versionID] = "#{$version['version']}";
  33. }
  34. }
  35. if(is_string($data->docVersions)) $data->docVersions = \json_decode($data->docVersions, true);
  36. $docBox = array();
  37. if($data->docs)
  38. {
  39. foreach(explode(',', $data->docs) as $docID)
  40. {
  41. $link = $mode == 'view' && common::hasPriv('doc', 'view') ? a(set::href(helper::createLink('doc', 'view', "docID={$docID}&version={$data->docVersions[$docID]}")), $oldDocs[$docID]->title) : $oldDocs[$docID]->title;
  42. $docBox[] = div
  43. (
  44. setData(array('docID' => $docID)),
  45. setClass('docItem flex items-center py-1'),
  46. span(setClass('mr-4 p-1 docTitle'), icon(setClass('mr-2'), 'file-text'), $link),
  47. div(setClass('w-24'), $mode == 'edit' ? picker(set::required(true), set::name("docVersions[$docID]"), set::items($oldDocVersions[$docID]), set::value($data->docVersions[$docID])) : "#{$data->docVersions[$docID]}"),
  48. $mode == 'edit' && $oldDocs[$docID]->version != $data->docVersions[$docID] ? label(setClass('ml-2 warning w-80'), $lang->task->docSyncTips) : null,
  49. $mode == 'edit' ? input(setClass('hidden'), set::name("oldDocs[$docID]"), set::value($docID)) : null,
  50. $mode == 'edit' ? btn(setClass('ghost ml-2'), icon('trash'), setData(array('on' => 'click', 'call' => 'window.removeDocs', 'params' => 'event'))) : null
  51. );
  52. }
  53. }
  54. return div
  55. (
  56. setClass('form-group-wrapper picker-box'),
  57. $mode == 'edit' ? picker
  58. (
  59. setID('docs'),
  60. set::name('docs'),
  61. set::items($docs),
  62. set::multiple(true),
  63. set::maxItemsCount(50),
  64. set::menu(array('checkbox' => true)),
  65. !empty($docs) ? set::toolbar(true) : null
  66. ) : null,
  67. div(setClass('mt-2'), $docBox)
  68. );
  69. }
  70. }