22 private static function InitPeriodList($arPeriodParams =
array())
25 self::PERIOD_EMPTY =>
GetMessage(
"admin_lib_calend_no_period"),
26 self::PERIOD_DAY =>
GetMessage(
"admin_lib_calend_day"),
27 self::PERIOD_WEEK =>
GetMessage(
"admin_lib_calend_week"),
28 self::PERIOD_MONTH =>
GetMessage(
"admin_lib_calend_month"),
29 self::PERIOD_QUARTER =>
GetMessage(
"admin_lib_calend_quarter"),
30 self::PERIOD_YEAR =>
GetMessage(
"admin_lib_calend_year"),
31 self::PERIOD_EXACT =>
GetMessage(
"admin_lib_calend_exact"),
32 self::PERIOD_BEFORE =>
GetMessage(
"admin_lib_calend_before"),
33 self::PERIOD_AFTER =>
GetMessage(
"admin_lib_calend_after"),
34 self::PERIOD_INTERVAL =>
GetMessage(
"admin_lib_calend_interval")
37 if (empty($arPeriodParams) || !is_array($arPeriodParams))
40 $arReturnPeriod =
array();
42 foreach ($arPeriodParams as $periodName => $lPhrase)
44 if (isset($arPeriod[$periodName]))
45 $arReturnPeriod[$periodName] = $lPhrase;
46 elseif (isset($arPeriod[$lPhrase]))
47 $arReturnPeriod[$lPhrase] = $arPeriod[$lPhrase];
50 if (empty($arReturnPeriod))
51 $arReturnPeriod = $arPeriod;
52 return $arReturnPeriod;
60 public static function Calendar($sFieldName, $sFromName=
"", $sToName=
"", $bTime=
false)
69 'INPUT_NAME' => $sFieldName,
70 'SHOW_TIME' => $bTime ?
'Y' :
'N'
71 ),
null,
array(
'HIDE_ICONS' =>
'Y'));
72 $res = ob_get_contents();
78 public static function CalendarDate($sFieldName, $sValue=
"", $size=
"10", $bTime=
false)
84 <div class="adm-input-wrap adm-input-wrap-calendar">
85 <input class="adm-input adm-input-calendar" type="text" name="'.$sFieldName.
'" size="'.(intval($size)+3).
'" value="'.
htmlspecialcharsbx($sValue).
'">
86 <button type="button" class="adm-calendar-icon" title="'.
GetMessage(
"admin_lib_calend_title").
'"></button>
89 const input = document.querySelector(`input[name="' . $sFieldName .
'"]`);
90 const button = input.nextElementSibling;
92 const getPicker = () => {
95 picker = new BX.UI.DatePicker.DatePicker({
98 enableTime: '.($bTime ?
"true" :
"false").
',
99 useInputEvents: false,
106 BX.Event.bind(button, "click", () => getPicker().show());
125 public static function CalendarPeriodCustom($sFromName, $sToName, $sFromVal=
"", $sToVal=
"", $bSelectShow=
false, $size=10, $bTime=
false, $arPeriod =
false, $periodValue =
'')
127 $arPeriodList = self::InitPeriodList($arPeriod);
129 return self::GetPeriodHtml($sFromName, $sToName, $sFromVal, $sToVal, $bSelectShow, $size, $bTime, $arPeriodList, $periodValue);
142 public static function CalendarPeriod($sFromName, $sToName, $sFromVal=
"", $sToVal=
"", $bSelectShow=
false, $size=10, $bTime=
false)
144 $arPeriodList = self::InitPeriodList();
146 return self::GetPeriodHtml($sFromName, $sToName, $sFromVal, $sToVal, $bSelectShow, $size, $bTime, $arPeriodList);
161 private static function GetPeriodHtml($sFromName, $sToName, $sFromVal, $sToVal, $bSelectShow, $size, $bTime, $arPeriod, $periodValue =
'')
168 <div class="adm-calendar-block adm-filter-alignment">
169 <div class="adm-filter-box-sizing">';
173 $sPeriodName = $sFromName.
"_FILTER_PERIOD";
174 $sDirectionName = $sFromName.
"_FILTER_DIRECTION";
176 $arDirection =
array(
177 "previous"=>
GetMessage(
"admin_lib_calend_previous"),
178 "current"=>
GetMessage(
"admin_lib_calend_current"),
182 $s .=
'<span class="adm-select-wrap adm-calendar-period" ><select class="adm-select adm-calendar-period" id="'.$sFromName.
'_calendar_period" name="'.$sPeriodName.
'" onchange="BX.CalendarPeriod.OnChangeP(this);" title="'.
GetMessage(
"admin_lib_calend_period_title").
'">';
186 $currentPeriod = (string)
$GLOBALS[$sPeriodName];
187 $periodValue = (string)$periodValue;
188 if ($periodValue !=
'')
189 $currentPeriod = $periodValue;
190 foreach($arPeriod as
$k => $v)
192 $k = (
$k !=
"NOT_REF" ?
$k :
"");
193 $s .=
'<option value="'.$k.
'"'.(($currentPeriod !=
'' && $currentPeriod ==
$k) ?
" selected":
"").
'>'.$v.
'</option>';
195 unset($currentPeriod);
197 $s .=
'</select></span>';
199 $currentDirection =
'';
200 if (isset(
$GLOBALS[$sDirectionName]))
201 $currentDirection = (string)
$GLOBALS[$sDirectionName];
202 $s .=
'<span class="adm-select-wrap adm-calendar-direction" style="display: none;"><select class="adm-select adm-calendar-direction" id="'.$sFromName.
'_calendar_direct" name="'.$sDirectionName.
'" onchange="BX.CalendarPeriod.OnChangeD(this);" title="'.
GetMessage(
"admin_lib_calend_direct_title").
'">';
203 foreach($arDirection as
$k => $v)
204 $s .=
'<option value="'.$k.
'"'.($currentDirection ==
$k ?
" selected":
"").
'>'.$v.
'</option>';
205 unset($currentDirection);
207 $s .=
'</select></span>';
211 '<div class="adm-input-wrap adm-calendar-inp adm-calendar-first" style="display: ' .($bSelectShow ?
'none' :
'inline-block').
';">'.
212 '<input type="text" class="adm-input adm-calendar-from" id="'.$sFromName.
'_calendar_from" name="'.$sFromName.
'" size="'.($size+5).
'" value="'.
htmlspecialcharsbx($sFromVal).
'">'.
213 '<button type="button" class="adm-calendar-icon" title="'.GetMessage(
"admin_lib_calend_title").
'"></button>'.
215 <span class="adm-calendar-separate" style="display: '.($bSelectShow ?
'none' :
'inline-block').
'"></span>'.
216 '<div class="adm-input-wrap adm-calendar-second" style="display: '.($bSelectShow ?
'none' :
'inline-block').
';">'.
217 '<input type="text" class="adm-input adm-calendar-to" id="'.$sToName.
'_calendar_to" name="'.$sToName.
'" size="'.($size+5).
'" value="'.
htmlspecialcharsbx($sToVal).
'">'.
218 '<button type="button" class="adm-calendar-icon" title="'.GetMessage(
"admin_lib_calend_title").
'"></button>'.
222 const inputFrom = document.getElementById("' . $sFromName .
'_calendar_from");
223 const buttonFrom = inputFrom.nextElementSibling;
224 const inputTo = document.getElementById("' . $sToName .
'_calendar_to");
225 const buttonTo = inputTo.nextElementSibling;
227 let pickerFrom = null;
229 const getPickerFrom = () => {
230 if (pickerFrom === null)
232 pickerFrom = new BX.UI.DatePicker.DatePicker({
233 targetNode: inputFrom,
234 inputField: inputFrom,
235 useInputEvents: false,
236 enableTime: '.($bTime ?
"true" :
"false").
',
243 const getPickerTo = () => {
244 if (pickerTo === null)
246 pickerTo = new BX.UI.DatePicker.DatePicker({
249 useInputEvents: false,
250 enableTime: '.($bTime ?
"true" :
"false").
',
257 BX.Event.bind(buttonFrom, "click", () => getPickerFrom().show());
258 BX.Event.bind(buttonTo, "click", () => getPickerTo().show());
261 window["'.$sFromName.
'_bTime"] = '.($bTime ?
"true" :
"false").
';';
264 $s .=
'BX.CalendarPeriod.Init(BX("'.$sFromName.
'_calendar_from"), BX("'.$sToName.
'_calendar_to"), BX("'.$sFromName.
'_calendar_period"));';
static CalendarPeriod($sFromName, $sToName, $sFromVal="", $sToVal="", $bSelectShow=false, $size=10, $bTime=false)
static CalendarPeriodCustom($sFromName, $sToName, $sFromVal="", $sToVal="", $bSelectShow=false, $size=10, $bTime=false, $arPeriod=false, $periodValue='')
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)