1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
clearnrelationhelper.php
См. документацию.
1<?php
2
4{
5 public static function RenderForm ($oAccess, $LESSON_ID, $arOPathes)
6 {
7 global $APPLICATION;
8
9 $curDir = $APPLICATION->GetCurDir();
10 if (mb_substr($curDir, -1) !== '/')
11 $curDir .= '/';
12
13 ?>
14 <script>
15 function module_learning_js_admin_function_add_parent(lesson_id, name)
16 {
17 module_learning_js_admin_function_add_child_or_parent('LEARNING_LIST_OF_PARENTS', 'RELATION_PARENT[]', lesson_id, name);
18 //alert ('called: module_learning_js_admin_function_add_parent(' + lesson_id + name + ')');
19 }
20 function module_learning_js_admin_function_add_child(lesson_id, name)
21 {
22 module_learning_js_admin_function_add_child_or_parent('LEARNING_LIST_OF_DESCENDANTS', 'RELATION_CHILD[]', lesson_id, name);
23 //alert ('called: module_learning_js_admin_function_add_child(' + lesson_id + ')');
24 }
25 function module_learning_js_admin_function_add_child_or_parent(targetNode, fieldName, lesson_id, name)
26 {
27 var elemId = 'RELATION_PARENT_LID_' + lesson_id;
28
29 var oDIV = BX.create('DIV', {'props': {'id': elemId}});
30 var oA = BX.create(
31 'SPAN',
32 {
33 'props':
34 {
35 'className': 'access-delete',
36 },
37 'style':
38 {
39 position: 'relative',
40 top: '3px',
41 marginRight: '1px'
42 },
43 'events':
44 {
45 'click': function() {
46 document.getElementById(elemId).parentNode.removeChild(document.getElementById(elemId));
47 }
48 }
49 }
50 );
51 var oINPUT = BX.create(
52 'INPUT',
53 {
54 'props':
55 {
56 'type': 'hidden',
57 'name': fieldName,
58 'value': lesson_id
59 }
60 }
61 );
62 var oSPAN = BX.create(
63 'SPAN',
64 {
65 'text': '[' + lesson_id + '] ' + name
66 }
67 );
68 var oSPAN_space = BX.create(
69 'SPAN',
70 {
71 'text': ' '
72 }
73 );
74
75 oDIV.appendChild(oA);
76 oDIV.appendChild(oSPAN_space);
77 oDIV.appendChild(oINPUT);
78 oDIV.appendChild(oSPAN);
79 BX(targetNode).appendChild(oDIV);
80 }
81 </script>
82 <?php
83
84 $arChilds = array();
85 $key = 0;
86
87 $isChapter = $isCourse = false;
88 $resChilds = CLearnLesson::GetListOfImmediateChilds($LESSON_ID);
89 while ($arChild = $resChilds->Fetch())
90 {
91 $isChapter = true; // this lesson is chapter, because there is descendants
92 $arChilds['RELATION_CHILD_' . $key++] = array(
93 'elemName' => 'RELATION_CHILD[]',
94 'lessonId' => $arChild['LESSON_ID'],
95 'Name' => '[<a href="' . htmlspecialcharsbx($curDir) . 'learn_unilesson_edit.php?lang=' . LANG
96 . '&LESSON_ID=' . ($arChild['LESSON_ID'] + 0) . '&LESSON_PATH=' . (int) $arChild['LESSON_ID'] . '" target=_blank>'
97 . (int) $arChild['LESSON_ID']
98 . '</a>] '
99 . htmlspecialcharsbx($arChild['NAME'])
100 );
101 }
102
103 // Is course?
104 $isCourse = (CLearnLesson::GetLinkedCourse ($LESSON_ID) !== false);
105
106 ?>
107 <div style="padding:10px;">
108 <div id="LEARNING_LIST_OF_PARENTS" style="padding:10px 0;">
109 <h3><?php echo GetMessage('LEARNING_LIST_OF_PARENTS') . ':'; ?></h3>
110 <?php
111 $arParents = array();
112 $resParents = CLearnLesson::GetListOfImmediateParents($LESSON_ID);
113 while ($arParent = $resParents->Fetch())
114 {
115 $arParents['RELATION_PARENT_' . $key++] = array(
116 'elemName' => 'RELATION_PARENT[]',
117 'lessonId' => $arParent['LESSON_ID'],
118 'Name' => '[<a href="' . htmlspecialcharsbx($curDir) . 'learn_unilesson_edit.php?lang=' . LANG
119 . '&LESSON_ID=' . ($arParent['LESSON_ID'] + 0) . '&LESSON_PATH=' . (int) $arParent['LESSON_ID'] . '" target=_blank>'
120 . (int) $arParent['LESSON_ID'] . '</a>] '
121 . htmlspecialcharsbx($arParent['NAME'])
122 );
123 }
124
125 foreach ($arParents as $elemId => $arElem)
126 {
127 ?>
128 <div id="<?php echo $elemId; ?>">
129 <?php
130 if (
131 (
133 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS)
134 )
135 &&
136 (
138 || $oAccess->IsLessonAccessible ($arElem['lessonId'], CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS)
139 )
140 )
141 {
142 ?>
143 <span
144 onclick="document.getElementById('<?php echo $elemId; ?>').parentNode.removeChild(document.getElementById('<?php echo $elemId; ?>'))"
145 class="access-delete"
146 style="position:relative; top:3px; margin-right:1px;"
147 >&nbsp;</span>
148 <?php
149 }
150 ?>
151 <input type="hidden" name="<?php echo ($arElem['elemName']); ?>" value="<?php echo (int) $arElem['lessonId']; ?>">
152 <span style="font-style:italic;"><?php echo ($arElem['Name']); ?></span>
153 </div>
154 <?
155 }
156 ?>
157 </div>
158
159 <?php
161 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_LINK_TO_PARENTS)
162 )
163 {
164 ?>
165 <div style="padding:0px;">
166 <a href="javascript:void(0);" class="bx-action-href"
167 onclick="window.open('<?php echo addslashes(htmlspecialcharsbx($curDir)); ?>learn_unilesson_admin.php?lang=<?php echo LANGUAGE_ID;
168 ?>&amp;search_retpoint=module_learning_js_admin_function_add_parent&amp;search_mode_type=parents_candidates',
169 'module_learning_js_admin_window_select_lessons_for_relations',
170 'scrollbars=yes,resizable=yes,width=960,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 960)/2-5));"
171 ><?php echo GetMessage('LEARNING_ADD_ELEMENT'); ?></a>
172 </div>
173 <?php
174 }
175 ?>
176 <div style="height:25px;">&nbsp;</div>
177 <div id="LEARNING_LIST_OF_DESCENDANTS" style="padding:10px 0;">
178 <h3><?php echo GetMessage('LEARNING_LIST_OF_DESCENDANTS') . ':'; ?></h3>
179 <?php
180 foreach ($arChilds as $elemId => $arElem)
181 {
182 ?>
183 <div id="<?php echo $elemId; ?>">
184 <?php
185 if (
186 (
188 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS)
189 )
190 &&
191 (
193 || $oAccess->IsLessonAccessible ($arElem['lessonId'], CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS)
194 )
195 )
196 {
197 ?>
198 <a href="javascript:void(0);"
199 onclick="document.getElementById('<?php echo $elemId; ?>').parentNode.removeChild(document.getElementById('<?php echo $elemId; ?>'))"
200 class="access-delete"></a>
201 <?php
202 }
203 ?>
204 <input type="hidden" name="<?php echo ($arElem['elemName']); ?>" value="<?php echo (int) $arElem['lessonId']; ?>">
205 <span style="font-style:italic;"><?php echo ($arElem['Name']); ?></span>
206 </div>
207 <?
208 }
209 ?>
210 </div>
211 <?php
213 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_LINK_DESCENDANTS)
214 )
215 {
216 ?>
217 <div style="padding:0px;">
218 <a href="javascript:void(0);" class="bx-action-href"
219 onclick="window.open('<?php echo addslashes(htmlspecialcharsbx($curDir)); ?>learn_unilesson_admin.php?lang=<?php echo LANGUAGE_ID;
220 ?>&amp;search_retpoint=module_learning_js_admin_function_add_child',
221 'module_learning_js_admin_window_select_lessons_for_relations',
222 'scrollbars=yes,resizable=yes,width=960,height=500,top='+Math.floor((screen.height - 560)/2-14)+',left='+Math.floor((screen.width - 960)/2-5));"
223 ><?php echo GetMessage('LEARNING_ADD_ELEMENT'); ?></a>
224 </div>
225 <?php
226 }
227 ?>
228 <div style="height:25px;">&nbsp;</div>
229 <hr>
230 <div id="LEARNING_LIST_OF_ALL_PARENT_PATHES" style="padding:10px 0;">
231 <?php
232
233 $cntParentPathes = count($arOPathes);
234
235 $langPhraseBase = 'LEARNING_LIST_OF_ALL_PARENT_PATHES_FOR_';
236
237 $lessonType = 'LESSON';
238 if ($isCourse)
239 $lessonType = 'COURSE';
240 elseif ($isChapter)
241 $lessonType = 'CHAPTER';
242
243 $isEmpty = '';
244 if ($cntParentPathes === 0)
245 $isEmpty = '_IS_EMPTY';
246
247 echo '<h3>' . GetMessage($langPhraseBase . $lessonType . $isEmpty) . '</h3>';
248
249 if ($cntParentPathes > 0)
250 {
251 $pattern = '[<a href="' . addslashes(htmlspecialcharsbx($curDir)) . 'learn_unilesson_edit.php?lang=' . LANG
252 . '&LESSON_ID=#LESSON_ID#&LESSON_PATH=#LESSON_ID#" target="_blank">#LESSON_ID#</a>] #NAME#';
253
254 foreach ($arOPathes as $oPath)
255 {
256 echo $oPath->GetPathAsHumanReadableString(' / ', $pattern);
257
258 if ($oPath->Count() >= 1)
259 {
260 if (CLearnLesson::IsPublishProhibited ($LESSON_ID, $oPath->GetTop()))
261 echo ' <span style="color:grey;">(' . GetMessage('LEARNING_LESSON_IS_PUBLISH_PROHIBITED') . ')</span>';
262 }
263
264 echo '<br>';
265 }
266 }
267 ?>
268 </div>
269 </div>
270 <?php
271 }
272
273
274 public static function ProccessPOST($oAccess, $LESSON_ID, $sort = false)
275 {
276 $isAccessUseCache = true;
277
278 if ($sort === false)
279 $sort = 500;
280
281 // Remove/add relations from/to parent
282 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)
283 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)
284 || $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)
285 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)
286 )
287 {
288 $arCurParentsIds = array();
289 $resParents = CLearnLesson::GetListOfImmediateParents($LESSON_ID);
290 while ($arParent = $resParents->Fetch())
291 $arCurParentsIds[] = (int) $arParent['LESSON_ID'];
292
293 $arDestParentsIds = array();
294
295 if (isset($_POST['RELATION_PARENT']) && is_array($_POST['RELATION_PARENT']))
296 foreach ($_POST['RELATION_PARENT'] as $key => $relatedLessonId)
297 $arDestParentsIds[] = (int) $relatedLessonId;
298
299 // remove relations
300 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)
301 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)
302 )
303 {
304 $arRemoveIds = array_diff ($arCurParentsIds, $arDestParentsIds);
305 foreach ($arRemoveIds as $relatedLessonId)
306 {
307 if ( $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)
308 || $oAccess->IsLessonAccessible ($relatedLessonId, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)
309 )
310 {
311 CLearnLesson::RelationRemove ($relatedLessonId, $LESSON_ID);
312 }
313 }
314 }
315
316 // add relations
317 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)
318 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)
319 )
320 {
321 $arAddIds = array_diff ($arDestParentsIds, $arCurParentsIds);
322 foreach ($arAddIds as $relatedLessonId)
323 {
324 if ( $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)
325 || $oAccess->IsLessonAccessible ($relatedLessonId, CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)
326 )
327 {
328 CLearnLesson::RelationAdd ($relatedLessonId, $LESSON_ID, array('SORT' => $sort));
329 }
330 }
331 }
332 }
333
334 // Remove/add relations from/to childs
335 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)
336 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)
337 || $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)
338 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)
339 )
340 {
341 $arCurChildsIds = array();
342 $resChilds = CLearnLesson::GetListOfImmediateChilds($LESSON_ID);
343 while ($arChild = $resChilds->Fetch())
344 $arCurChildsIds[] = (int) $arChild['LESSON_ID'];
345
346 $arDestChildsIds = array();
347
348 if (isset($_POST['RELATION_CHILD']) && is_array($_POST['RELATION_CHILD']))
349 foreach ($_POST['RELATION_CHILD'] as $key => $relatedLessonId)
350 $arDestChildsIds[] = (int) $relatedLessonId;
351
352 // remove relations
353 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)
354 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, $isAccessUseCache)
355 )
356 {
357 $arRemoveIds = array_diff ($arCurChildsIds, $arDestChildsIds);
358 foreach ($arRemoveIds as $relatedLessonId)
359 {
360 if ( $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)
361 || $oAccess->IsLessonAccessible ($relatedLessonId, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, $isAccessUseCache)
362 )
363 {
364 CLearnLesson::RelationRemove ($LESSON_ID, $relatedLessonId);
365 }
366 }
367 }
368
369 // add relations
370 if ($oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)
371 || $oAccess->IsLessonAccessible ($LESSON_ID, CLearnAccess::OP_LESSON_LINK_DESCENDANTS, $isAccessUseCache)
372 )
373 {
374 $arAddIds = array_diff ($arDestChildsIds, $arCurChildsIds);
375 foreach ($arAddIds as $relatedLessonId)
376 {
377 if ( $oAccess->IsBaseAccess(CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)
378 || $oAccess->IsLessonAccessible ($relatedLessonId, CLearnAccess::OP_LESSON_LINK_TO_PARENTS, $isAccessUseCache)
379 )
380 {
381 CLearnLesson::RelationAdd ($LESSON_ID, $relatedLessonId, array('SORT' => $sort));
382 }
383 }
384 }
385 }
386 }
387}
global $APPLICATION
Определения include.php:80
const OP_LESSON_UNLINK_FROM_PARENTS
Определения clearnaccess.php:143
const OP_LESSON_LINK_DESCENDANTS
Определения clearnaccess.php:144
const OP_LESSON_UNLINK_DESCENDANTS
Определения clearnaccess.php:145
const OP_LESSON_LINK_TO_PARENTS
Определения clearnaccess.php:142
static GetLinkedCourse($lessonId)
Определения clearnlesson.php:1198
static RelationAdd($parentLessonId, $childLessonId, $arProperties)
Определения clearnlesson.php:1475
static IsPublishProhibited($in_lessonId, $in_contextCourseLessonId)
Определения clearnlesson.php:2218
static GetListOfImmediateChilds($lessonId, $arOrder=array(), $arFilter=array(), $arSelectFields=array(), $arNavParams=array())
Определения clearnlesson.php:1855
static GetListOfImmediateParents($lessonId, $arOrder=array(), $arFilter=array(), $arSelectFields=array(), $arNavParams=array())
Определения clearnlesson.php:1861
static RelationRemove($parentLessonId, $childLessonId)
Определения clearnlesson.php:1504
static ProccessPOST($oAccess, $LESSON_ID, $sort=false)
Определения clearnrelationhelper.php:274
static RenderForm($oAccess, $LESSON_ID, $arOPathes)
Определения clearnrelationhelper.php:5
& nbsp
Определения epilog_main_admin.php:38
background position
Определения file_new.php:745
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
Определения file_new.php:657
$oAccess
Определения options.php:19
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
GetMessage($name, $aReplace=null)
Определения tools.php:3397
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
font style
Определения invoice.php:442
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
if(!Loader::includeModule('sale')) $pattern
Определения index.php:20