1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
prop_topicid.php
См. документацию.
1<?php
2use \Bitrix\Forum;
3use \Bitrix\Main;
4
6
8{
9 public static function GetUserTypeDescription()
10 {
11 return [
12 'PROPERTY_TYPE' => 'S',
13 'USER_TYPE' => 'TopicID',
14 'DESCRIPTION' => GetMessage('IBLOCK_PROP_TOPICID_DESC'),
15 'GetPropertyFieldHtml' => [__CLASS__, 'GetPropertyFieldHtml'],
16 'GetAdminListViewHTML' => [__CLASS__, 'GetAdminListViewHTML'],
17 //optional handlers
18 'ConvertToDB' => [__CLASS__, 'ConvertToDB'],
19 'ConvertFromDB' => [__CLASS__, 'ConvertFromDB'],
20 'GetSettingsHTML' => [__CLASS__, 'GetSettingsHTML'],
21 ];
22 }
23
24 public static function GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
25 {
26 $arPropertyFields = ['HIDE' => ['SEARCHABLE', 'WITH_DESCRIPTION', 'ROW_COUNT', 'COL_COUNT']];
27 return '';
28 }
29
30 public static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
31 {
32 if (CModule::IncludeModule('forum'))
33 {
34 $topicId = intval($value['VALUE']);
35 $topicTitle = null;
36 if ($topicId > 0)
37 {
38 $value['VALUE'] = $topicId;
39
40 if ($topic = Forum\TopicTable::getById($topicId)->fetch())
41 {
42 $topicTitle = $topic['TITLE'];
43 }
44 }
45 return self::getHTMLToFindTopic(
46 $strHTMLControlName['VALUE'],
47 $topicId,
48 $topicTitle
49 );
50 }
51 return '';
52 }
53
54 private static function getHTMLToFindTopic(
56 $topicId,
57 $topicTitle = "")
58 {
59 static $number = 0;
60 $number++;
61
62 $topicId = intval($topicId);
64 $topicTitle = htmlspecialcharsbx($topicTitle);
65 $prefix = "findForumTopic{$number}";
66
67 $message = [
68 'wait' => GetMessageJS("MAIN_WAIT"),
69 'notFound' => GetMessageJS('MAIN_NOT_FOUND'),
70 ];
71
72 global $APPLICATION;
73 if ($APPLICATION->GetGroupRight("forum") >= "R")
74 {
75 $strReturn = <<<HTML
76<input type="text" name="{$inputName}" value="{$topicId}" size="3" id="{$prefix}Value">
77<iframe style="width:0; height:0; border: 0" src="javascript:void(0)" name="{$prefix}Frame" id="{$prefix}Frame"></iframe>
78<input type="button" id="{$prefix}Button" value="...">
79<span id="{$prefix}Title"></span>
80<script>
81 BX.ready(function(){
82 BX.bind(BX("{$prefix}Button"), 'click', function () {
83 window.open(
84 '/bitrix/admin/forum_topics_search.php?' + BX.util.buildQueryString({
85 lang: BX.message('LANGUAGE_ID'),
86 nodeId: "{$prefix}Value"
87 }),
88 '',
89 'scrollbars=yes,resizable=yes,width=760,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 760)/2-5)
90 );
91 });
92
93 var previousValue = 0;
94 var changeManualy = function() {
95 var valueNode = BX("{$prefix}Value");
96 var value = parseInt(valueNode.value);
97 if (value !== previousValue)
98 {
99 if (value > 0)
100 {
101 previousValue = value;
102 changeTitle("<i>{$message['wait']}</i>");
103 BX.ajax.runAction('bitrix:forum.topic.head',
104 {data: {topicId: value}
105 }).then(function(result) {
106 if (result.status === "success")
107 {
108 return changeTitle(result.data);
109 }
110 throw new Error(result.errors[0].message);
111 }).catch(function(error) {
112 changeTitle('<b>' + error.message + '</b>');
113 });
114 }
115 else
116 {
117 changeTitle('');
118 }
119 }
120 };
121 BX.bind(BX("{$prefix}Value"), "change", changeManualy);
122 function changeTitle(data) {
123 var titleNode = BX("{$prefix}Title");
124 if (data === null || ((data['ID'] > 0 && data['TITLE'].length <= 0)))
125 {
126 titleNode.innerHTML = "{$message["notFound"]}";
127 }
128 else if (BX.type.isString(data))
129 {
130 titleNode.innerHTML = data;
131 }
132 else if (data['ID'] > 0 && data['TITLE'].length > 0)
133 {
134 titleNode.innerHTML = [
135 '[<a class="tablebodylink" href="/bitrix/admin/forum_topics.php?lang=', BX.message('LANGUAGE_ID'), '">',
136 BX.util.htmlspecialchars(data['ID']),
137 '</a>]',
138 BX.util.htmlspecialchars(data['TITLE'])
139 ].join('');
140 }
141 else
142 {
143 titleNode.innerHTML = '';
144 }
145 }
146 changeTitle({ID: {$topicId}, TITLE: "{$topicTitle}"});
147 });
148</script>
149HTML;
150
151 }
152 else
153 {
154 $strReturn = <<<HTML
155<input type="text" value="{$topicId}" size="3">
156HTML;
157 }
158 return $strReturn;
159 }
160
161 public static function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
162 {
163 static $cache = array();
164 if (CModule::IncludeModule('forum'))
165 {
166 $value['VALUE'] = intval($value['VALUE']);
167 if ($value['VALUE'] <= 0) {
168 $value['VALUE'] = '';
169 $res = '';
170 } else {
171 if (!array_key_exists($value['VALUE'], $cache))
172 $cache[$value['VALUE']] = CForumTopic::GetByID($value['VALUE']);
173 $arTopic = $cache[$value['VALUE']];
174 $res = (!empty($arTopic) ? '['.$value['VALUE'].'] ('.htmlspecialcharsbx($arTopic['TITLE']).')' : $value['VALUE']);
175 }
176 return $res;
177 }
178 return '';
179 }
180
181 public static function ConvertToDB($arProperty, $value)
182 {
183 if ($value['VALUE'] <> '')
184 {
185 $value['VALUE'] = intval($value['VALUE']);
186 }
187 return $value;
188 }
189
190 public static function ConvertFromDB($arProperty, $value)
191 {
192 if ($value['VALUE'] <> '')
193 {
194 $value['VALUE'] = intval($value['VALUE']);
195 }
196 return $value;
197 }
198}
global $APPLICATION
Определения include.php:80
static GetByID($ID, $arAddParams=array())
Определения topic.php:431
static GetSettingsHTML($arProperty, $strHTMLControlName, &$arPropertyFields)
Определения prop_topicid.php:24
static GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
Определения prop_topicid.php:30
static GetUserTypeDescription()
Определения prop_topicid.php:9
static GetAdminListViewHTML($arProperty, $value, $strHTMLControlName)
Определения prop_topicid.php:161
static ConvertFromDB($arProperty, $value)
Определения prop_topicid.php:190
static ConvertToDB($arProperty, $value)
Определения prop_topicid.php:181
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$inputName
Определения options.php:197
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
GetMessageJS($name, $aReplace=false)
Определения tools.php:3392
trait Error
Определения error.php:11
$message
Определения payment.php:8
font style
Определения invoice.php:442
font size
Определения invoice.php:442