v1.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace zin;
  3. class thinkStepQuote extends wg
  4. {
  5. /**
  6. * @var mixed[]
  7. */
  8. protected static $defineProps = array
  9. (
  10. 'step?: object', // 整个步骤的对象
  11. 'questionType?: string', // 问题类型
  12. 'quoteQuestions?: array', // 引用问题
  13. 'setOption?: bool=false', // 选项配置方式
  14. 'quoteTitle?: string', // 列标题
  15. 'citation?: int=1', // 引用方式
  16. 'selectColumn?: string', // 选择列
  17. 'quotedQuestions?: array' // 引用当前问题的步骤
  18. );
  19. protected function build()
  20. {
  21. global $lang, $app;
  22. $app->loadLang('thinkstep');
  23. list($step, $setOption, $quoteTitle, $quoteQuestions, $citation, $selectColumn, $questionType, $quotedQuestions) = $this->prop(array('step', 'setOption', 'quoteTitle', 'quoteQuestions', 'citation', 'selectColumn', 'questionType', 'quotedQuestions'));
  24. if($step)
  25. {
  26. $setOption = isset($step->options->setOption) ? $step->options->setOption : false;
  27. $defaultQuote = !empty($quoteQuestions) ? $quoteQuestions[0]->id : null;
  28. $quoteTitle = isset($step->options->quoteTitle) ? $step->options->quoteTitle : $defaultQuote;
  29. $citation = isset($step->options->citation) ? $step->options->citation : 1;
  30. $selectColumn = isset($step->options->selectColumn) ? $step->options->selectColumn : null;
  31. }
  32. $quoteQuestionsItems = array();
  33. if(!empty($quoteQuestions))
  34. {
  35. foreach($quoteQuestions as $item)
  36. {
  37. $quoteQuestionsItems[] = array('text' => $item->index . '. ' . $item->title, 'value' => $item->id);
  38. }
  39. }
  40. $setOptionTip = sprintf($lang->thinkstep->tips->setOption, $lang->thinkstep->tips->options[$questionType], $lang->thinkstep->tips->options[$questionType]);
  41. if(empty($quoteQuestions)) $setOptionTip = sprintf($lang->thinkstep->tips->quoteTitle, $lang->thinkstep->tips->options[$questionType]);
  42. if($questionType == 'multicolumn' && !empty($quotedQuestions)) $setOptionTip = $lang->thinkstep->tips->disabledSetOption;
  43. return array
  44. (
  45. formRow
  46. (
  47. formGroup
  48. (
  49. setClass('w-66'),
  50. set::label($questionType == 'checkbox' ? $lang->thinkstep->label->setOption : $lang->thinkstep->label->columnSetOption),
  51. radioList(set::name('options[setOption]'), set::inline(true), set::value($setOption), set::items($lang->thinkstep->setOptionList), set::disabled(empty($quoteQuestions) || ($questionType == 'multicolumn' && !empty($quotedQuestions))), on::change()
  52. ->const('questionType', $questionType)
  53. ->do("questionType == 'checkbox' ? changeCheckboxSetOption(target) : changeMulticolumnSetOption(target)"))
  54. ),
  55. icon
  56. (
  57. setClass('mt-9 text-gray-400 cursor-pointer ml-1 text-base pt-0.5'),
  58. toggle::tooltip(array('placement' => 'top', 'title' => $setOptionTip, 'max-width' => '220px', 'className' => 'text-gray border border-gray-300', 'type' => 'white')),
  59. 'help'
  60. )
  61. ),
  62. formGroup
  63. (
  64. setClass('think-quote', $setOption == 0 ? 'hidden' : ''),
  65. set::label($lang->thinkstep->label->quoteTitle),
  66. set::labelClass('required'),
  67. picker
  68. (
  69. setdata('quote-questions', $quoteQuestions),
  70. setdata('selectColumn', $selectColumn),
  71. set(array
  72. (
  73. 'class' => 'options-quote-title',
  74. 'name' => 'options[quoteTitle]',
  75. 'placeholder' => $lang->thinkstep->placeholder->quoteTitle,
  76. 'items' => $quoteQuestionsItems,
  77. 'value' => !empty($quoteTitle) && !empty($quoteQuestionsItems) ? $quoteTitle : '',
  78. 'disabled' => empty($quoteQuestions),
  79. 'title' => empty($quoteQuestions) ? $lang->thinkstep->tips->quoteTitle : null,
  80. 'required' => true,
  81. )),
  82. on::inited()->call('changeQuoteTitle'),
  83. bind::change('changeQuoteTitle()')
  84. )
  85. ),
  86. formRow
  87. (
  88. setClass('think-quote quote-citation gap-0', $setOption == 0 ? 'hidden' : ''),
  89. setdata('citation', $citation),
  90. formGroup
  91. (
  92. setClass('citation'),
  93. set::label($lang->thinkstep->label->citation),
  94. set::labelClass('required'),
  95. radioList
  96. (
  97. set::name('options[citation]'),
  98. set::inline(true),
  99. set::value($citation),
  100. set::items($lang->thinkstep->citationList)
  101. )
  102. ),
  103. formGroup
  104. (
  105. setClass('multicolumn-citation w-1/2', $citation != 3 ? 'hidden' : ''),
  106. set::label($lang->thinkstep->label->citation),
  107. set::labelClass('required'),
  108. radioList
  109. (
  110. set::name('options[citation]'),
  111. set::inline(true),
  112. set::value($citation),
  113. set::items($lang->thinkstep->multiCitationList)
  114. )
  115. ),
  116. formGroup
  117. (
  118. setClass('select-column', $citation != 3 ? 'hidden' : ''),
  119. set::label($lang->thinkstep->label->selectColumn),
  120. set::labelClass('required'),
  121. set::labelHint($questionType == 'multicolumn' ? $lang->thinkstep->tips->selectColumn : null),
  122. picker(
  123. set(array(
  124. 'name' => 'options[selectColumn]',
  125. 'placeholder' => $lang->thinkstep->placeholder->quoteTitle,
  126. 'required' => true,
  127. 'items' => array(),
  128. 'value' => $selectColumn
  129. ))
  130. )
  131. )
  132. )
  133. );
  134. }
  135. }