Completed
Push — master ( ee3296...251d30 )
by Michael
01:55
created
class/Tree.php 1 patch
Indentation   +365 added lines, -365 removed lines patch added patch discarded remove patch
@@ -18,97 +18,97 @@  discard block
 block discarded – undo
18 18
  */
19 19
 class Tree extends \XoopsObjectTree
20 20
 {
21
-    //    public function __construct()
22
-    //    {
23
-    //    }
24
-
25
-    /**
26
-     * @param        $key
27
-     * @param        $ret
28
-     * @param        $prefix_orig
29
-     * @param        $objInsinstr
30
-     * @param string $class
31
-     * @param string $prefix_curr
32
-     */
33
-    public function _makePagesAdminOptions($key, &$ret, $prefix_orig, $objInsinstr, $class = 'odd', $prefix_curr = '')
34
-    {
35
-        $pathIcon16    = \Xmf\Module\Admin::iconUrl('', 16);
36
-        if ($key > 0) {
37
-
38
-            //
39
-            $class = ('even' === $class) ? 'odd' : 'even';
40
-            // ID инструкции ( Можно сделать статической )
41
-            $instrid = $objInsinstr->getVar('instrid');
42
-
43
-            // ID страницы
44
-            $pageid = $this->tree[$key]['obj']->getVar('pageid');
45
-            // Название страницы
46
-            $pagetitle = $this->tree[$key]['obj']->getVar('title');
47
-            // Вес
48
-            $pageweight = $this->tree[$key]['obj']->getVar('weight');
49
-            // Статус
50
-            $pagestatus = $this->tree[$key]['obj']->getVar('status');
51
-            // Тип страницы
52
-            $pagetype = $this->tree[$key]['obj']->getVar('type');
53
-
54
-            // Дочернии страницы
55
-            $page_childs = $this->getAllChild($pageid);
56
-            // Число дочерних страниц
57
-            $num_childs = count($page_childs);
58
-
59
-            // Действие - удаление
60
-            $act_del = ($num_childs > 0) ? '<img src="../assets/images/icons/16/application_key.png" alt="' . _AM_INSTR_NODELPAGE . '" title="' . _AM_INSTR_NODELPAGE . '" />' : '<a href="instr.php?op=delpage&pageid='
61
-                                                                                                                                                                      . $pageid
62
-                                                                                                                                                                      . '"><img src="'. $pathIcon16 . '/delete.png" alt="'
63
-                                                                                                                                                                      . _AM_INSTRUCTION_DEL
64
-                                                                                                                                                                      . '" title="'
65
-                                                                                                                                                                      . _AM_INSTRUCTION_DEL
66
-                                                                                                                                                                      . '"></a>';
67
-            //
68
-            $page_link = '<a name="pageid_' . $pageid . '" ' . ($pagetype ? 'href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext"' : '') . '>' . $pagetitle . '</a>';
69
-
70
-            $ret .= '<tr class="' . $class . '">
21
+	//    public function __construct()
22
+	//    {
23
+	//    }
24
+
25
+	/**
26
+	 * @param        $key
27
+	 * @param        $ret
28
+	 * @param        $prefix_orig
29
+	 * @param        $objInsinstr
30
+	 * @param string $class
31
+	 * @param string $prefix_curr
32
+	 */
33
+	public function _makePagesAdminOptions($key, &$ret, $prefix_orig, $objInsinstr, $class = 'odd', $prefix_curr = '')
34
+	{
35
+		$pathIcon16    = \Xmf\Module\Admin::iconUrl('', 16);
36
+		if ($key > 0) {
37
+
38
+			//
39
+			$class = ('even' === $class) ? 'odd' : 'even';
40
+			// ID инструкции ( Можно сделать статической )
41
+			$instrid = $objInsinstr->getVar('instrid');
42
+
43
+			// ID страницы
44
+			$pageid = $this->tree[$key]['obj']->getVar('pageid');
45
+			// Название страницы
46
+			$pagetitle = $this->tree[$key]['obj']->getVar('title');
47
+			// Вес
48
+			$pageweight = $this->tree[$key]['obj']->getVar('weight');
49
+			// Статус
50
+			$pagestatus = $this->tree[$key]['obj']->getVar('status');
51
+			// Тип страницы
52
+			$pagetype = $this->tree[$key]['obj']->getVar('type');
53
+
54
+			// Дочернии страницы
55
+			$page_childs = $this->getAllChild($pageid);
56
+			// Число дочерних страниц
57
+			$num_childs = count($page_childs);
58
+
59
+			// Действие - удаление
60
+			$act_del = ($num_childs > 0) ? '<img src="../assets/images/icons/16/application_key.png" alt="' . _AM_INSTR_NODELPAGE . '" title="' . _AM_INSTR_NODELPAGE . '" />' : '<a href="instr.php?op=delpage&pageid='
61
+																																									  . $pageid
62
+																																									  . '"><img src="'. $pathIcon16 . '/delete.png" alt="'
63
+																																									  . _AM_INSTRUCTION_DEL
64
+																																									  . '" title="'
65
+																																									  . _AM_INSTRUCTION_DEL
66
+																																									  . '"></a>';
67
+			//
68
+			$page_link = '<a name="pageid_' . $pageid . '" ' . ($pagetype ? 'href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext"' : '') . '>' . $pagetitle . '</a>';
69
+
70
+			$ret .= '<tr class="' . $class . '">
71 71
       <td>' . $prefix_curr . ' ' . $page_link . '</td>
72 72
       <td align="center" width="50">
73 73
         <input type="text" name="weights[]" size="2" value="' . $pageweight . '" />
74 74
         <input type="hidden" name="pageids[]" value="' . $pageid . '" />
75 75
       </td>
76 76
       <td align="center" width="180">';
77
-            // Просмотре без кэша
78
-            $ret .= ' <a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '&amp;nocache=1"><img src="../assets/images/icons/16/database_black.png" alt="' . _AM_INSTR_DISPLAY_NOCACHE . '" title="' . _AM_INSTR_DISPLAY_NOCACHE . '" /></a> ';
79
-            // Добавить подстраницу
80
-            $ret .= ' <a href="instr.php?op=editpage&instrid=' . $instrid . '&pid=' . $pageid . '"><img src="'. $pathIcon16 . '/add.png" alt="' . _AM_INSTRUCTION_ADDSUBPAGE . '" title="' . _AM_INSTRUCTION_ADDSUBPAGE . '" /></a> ';
81
-
82
-            if ($pagestatus) {
83
-                $ret .= ' <img src="../assets/images/icons/16/lock.png" alt="' . _AM_INSTRUCTION_LOCK . '" title="' . _AM_INSTRUCTION_LOCK . '"> ';
84
-            } else {
85
-                $ret .= ' <img src="../assets/images/icons/16/lock_open.png" alt="' . _AM_INSTRUCTION_UNLOCK . '" title="' . _AM_INSTRUCTION_UNLOCK . '"> ';
86
-            }
87
-
88
-            $ret .= ' <a href="instr.php?op=editpage&pageid=' . $pageid . '"><img src="'. $pathIcon16 . '/edit.png" alt="' . _AM_INSTRUCTION_EDIT . '" title="' . _AM_INSTRUCTION_EDIT . '"></a> ' . $act_del . '
77
+			// Просмотре без кэша
78
+			$ret .= ' <a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '&amp;nocache=1"><img src="../assets/images/icons/16/database_black.png" alt="' . _AM_INSTR_DISPLAY_NOCACHE . '" title="' . _AM_INSTR_DISPLAY_NOCACHE . '" /></a> ';
79
+			// Добавить подстраницу
80
+			$ret .= ' <a href="instr.php?op=editpage&instrid=' . $instrid . '&pid=' . $pageid . '"><img src="'. $pathIcon16 . '/add.png" alt="' . _AM_INSTRUCTION_ADDSUBPAGE . '" title="' . _AM_INSTRUCTION_ADDSUBPAGE . '" /></a> ';
81
+
82
+			if ($pagestatus) {
83
+				$ret .= ' <img src="../assets/images/icons/16/lock.png" alt="' . _AM_INSTRUCTION_LOCK . '" title="' . _AM_INSTRUCTION_LOCK . '"> ';
84
+			} else {
85
+				$ret .= ' <img src="../assets/images/icons/16/lock_open.png" alt="' . _AM_INSTRUCTION_UNLOCK . '" title="' . _AM_INSTRUCTION_UNLOCK . '"> ';
86
+			}
87
+
88
+			$ret .= ' <a href="instr.php?op=editpage&pageid=' . $pageid . '"><img src="'. $pathIcon16 . '/edit.png" alt="' . _AM_INSTRUCTION_EDIT . '" title="' . _AM_INSTRUCTION_EDIT . '"></a> ' . $act_del . '
89 89
       </td>
90 90
     </tr>';
91 91
 
92
-            // Устанавливаем префикс
93
-            $prefix_curr .= $prefix_orig;
94
-        }
95
-
96
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
97
-            foreach ($this->tree[$key]['child'] as $childkey) {
98
-                $this->_makePagesAdminOptions($childkey, $ret, $prefix_orig, $objInsinstr, $class, $prefix_curr);
99
-            }
100
-        }
101
-    }
102
-
103
-    /**
104
-     * @param        $objInsinstr
105
-     * @param string $prefix
106
-     * @param int    $key
107
-     * @return string
108
-     */
109
-    public function makePagesAdmin(&$objInsinstr, $prefix = '-', $key = 0)
110
-    {
111
-        $ret = '<form name="inspages" action="instr.php" method="post">
92
+			// Устанавливаем префикс
93
+			$prefix_curr .= $prefix_orig;
94
+		}
95
+
96
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
97
+			foreach ($this->tree[$key]['child'] as $childkey) {
98
+				$this->_makePagesAdminOptions($childkey, $ret, $prefix_orig, $objInsinstr, $class, $prefix_curr);
99
+			}
100
+		}
101
+	}
102
+
103
+	/**
104
+	 * @param        $objInsinstr
105
+	 * @param string $prefix
106
+	 * @param int    $key
107
+	 * @return string
108
+	 */
109
+	public function makePagesAdmin(&$objInsinstr, $prefix = '-', $key = 0)
110
+	{
111
+		$ret = '<form name="inspages" action="instr.php" method="post">
112 112
   <table width="100%" cellspacing="1" class="outer">
113 113
     <tr>
114 114
       <th align="center" colspan="3">' . sprintf(_AM_INSTRUCTION_LISTPAGESININSTR, $objInsinstr->getVar('title')) . '</th>
@@ -119,10 +119,10 @@  discard block
 block discarded – undo
119 119
       <td class="head" align="center" width="180">' . _AM_INSTRUCTION_ACTION . '</td>
120 120
     </tr>';
121 121
 
122
-        // Выводим все страницы
123
-        $this->_makePagesAdminOptions($key, $ret, $prefix, $objInsinstr);
122
+		// Выводим все страницы
123
+		$this->_makePagesAdminOptions($key, $ret, $prefix, $objInsinstr);
124 124
 
125
-        $ret .= '<tr class="foot">
125
+		$ret .= '<tr class="foot">
126 126
       <td><a href="instr.php?op=editpage&instrid=' . $objInsinstr->getVar('instrid') . '"><img src="'. $pathIcon16 . '/add.png" alt="' . _AM_INSTRUCTION_ADDPAGE . '" title="' . _AM_INSTRUCTION_ADDPAGE . '"></a></td>
127 127
       <td colspan="2">
128 128
         <input type="hidden" name="instrid" value="' . $objInsinstr->getVar('instrid') . '" />
@@ -133,61 +133,61 @@  discard block
 block discarded – undo
133 133
   </table>
134 134
 </form>';
135 135
 
136
-        return $ret;
137
-    }
138
-
139
-    // ==================================
140
-    // === Дерево категорий в админке ===
141
-    // ==================================
142
-
143
-    /**
144
-     * @param        $key
145
-     * @param        $ret
146
-     * @param        $prefix_orig
147
-     * @param array  $cidinstrids
148
-     * @param string $class
149
-     * @param string $prefix_curr
150
-     */
151
-    public function _makeCatsAdminOptions($key, &$ret, $prefix_orig, $cidinstrids = [], &$class = 'odd', $prefix_curr = '')
152
-    {
153
-        $pathIcon16    = \Xmf\Module\Admin::iconUrl('', 16);
154
-        if ($key > 0) {
155
-
156
-            //
157
-            $class = ('even' === $class) ? 'odd' : 'even';
158
-
159
-            // ID категории
160
-            $catid = $this->tree[$key]['obj']->getVar('cid');
161
-            // Название категории
162
-            $cattitle = $this->tree[$key]['obj']->getVar('title');
163
-            // Вес
164
-            $catweight = $this->tree[$key]['obj']->getVar('weight');
165
-            // Статус
166
-            $pagestatus = $this->tree[$key]['obj']->getVar('status');
167
-
168
-            // Дочернии категории
169
-            $cat_childs = $this->getAllChild($catid);
170
-            // Число дочерних категорий
171
-            $num_childs = count($cat_childs);
172
-            // Число инструкций
173
-            $num_instrs = isset($cidinstrids[$catid]) ? $cidinstrids[$catid] : 0;
174
-
175
-            // Действие - удаление
176
-            $act_del = (($num_instrs > 0) || ($num_childs > 0)) ? '<img src="'. $pathIcon16 . '/delete.png" alt="' . _AM_INSTR_NODELCAT . '" title="' . _AM_INSTR_NODELCAT . '" />' : '<a href="cat.php?op=delcat&cid='
177
-                                                                                                                                                                                           . $catid
178
-                                                                                                                                                                                           . '"><img src="'. $pathIcon16 . '/delete.png" alt="'
179
-                                                                                                                                                                                           . _AM_INSTRUCTION_DEL
180
-                                                                                                                                                                                           . '" title="'
181
-                                                                                                                                                                                           . _AM_INSTRUCTION_DEL
182
-                                                                                                                                                                                           . '" /></a>';
183
-            // Действие - просмотр
184
-            $act_view = ($num_instrs > 0) ? '<a href="instr.php?cid=' . $catid . '"><img src="'. $pathIcon16 . '/view.png" alt="' . _AM_INSTR_VIEWINSTR . '" title="' . _AM_INSTR_VIEWINSTR . '" /></a>' : '<img src="../assets/images/icons/16/document_protect.png" alt="'
185
-                                                                                                                                                                                                             . _AM_INSTR_NOVIEWINSTR
186
-                                                                                                                                                                                                             . '" title="'
187
-                                                                                                                                                                                                             . _AM_INSTR_NOVIEWINSTR
188
-                                                                                                                                                                                                             . '" />';
189
-
190
-            $ret .= '<tr class="' . $class . '">
136
+		return $ret;
137
+	}
138
+
139
+	// ==================================
140
+	// === Дерево категорий в админке ===
141
+	// ==================================
142
+
143
+	/**
144
+	 * @param        $key
145
+	 * @param        $ret
146
+	 * @param        $prefix_orig
147
+	 * @param array  $cidinstrids
148
+	 * @param string $class
149
+	 * @param string $prefix_curr
150
+	 */
151
+	public function _makeCatsAdminOptions($key, &$ret, $prefix_orig, $cidinstrids = [], &$class = 'odd', $prefix_curr = '')
152
+	{
153
+		$pathIcon16    = \Xmf\Module\Admin::iconUrl('', 16);
154
+		if ($key > 0) {
155
+
156
+			//
157
+			$class = ('even' === $class) ? 'odd' : 'even';
158
+
159
+			// ID категории
160
+			$catid = $this->tree[$key]['obj']->getVar('cid');
161
+			// Название категории
162
+			$cattitle = $this->tree[$key]['obj']->getVar('title');
163
+			// Вес
164
+			$catweight = $this->tree[$key]['obj']->getVar('weight');
165
+			// Статус
166
+			$pagestatus = $this->tree[$key]['obj']->getVar('status');
167
+
168
+			// Дочернии категории
169
+			$cat_childs = $this->getAllChild($catid);
170
+			// Число дочерних категорий
171
+			$num_childs = count($cat_childs);
172
+			// Число инструкций
173
+			$num_instrs = isset($cidinstrids[$catid]) ? $cidinstrids[$catid] : 0;
174
+
175
+			// Действие - удаление
176
+			$act_del = (($num_instrs > 0) || ($num_childs > 0)) ? '<img src="'. $pathIcon16 . '/delete.png" alt="' . _AM_INSTR_NODELCAT . '" title="' . _AM_INSTR_NODELCAT . '" />' : '<a href="cat.php?op=delcat&cid='
177
+																																														   . $catid
178
+																																														   . '"><img src="'. $pathIcon16 . '/delete.png" alt="'
179
+																																														   . _AM_INSTRUCTION_DEL
180
+																																														   . '" title="'
181
+																																														   . _AM_INSTRUCTION_DEL
182
+																																														   . '" /></a>';
183
+			// Действие - просмотр
184
+			$act_view = ($num_instrs > 0) ? '<a href="instr.php?cid=' . $catid . '"><img src="'. $pathIcon16 . '/view.png" alt="' . _AM_INSTR_VIEWINSTR . '" title="' . _AM_INSTR_VIEWINSTR . '" /></a>' : '<img src="../assets/images/icons/16/document_protect.png" alt="'
185
+																																																			 . _AM_INSTR_NOVIEWINSTR
186
+																																																			 . '" title="'
187
+																																																			 . _AM_INSTR_NOVIEWINSTR
188
+																																																			 . '" />';
189
+
190
+			$ret .= '<tr class="' . $class . '">
191 191
       <td>' . $prefix_curr . ' <a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/index.php?cid=' . $catid . '">' . $cattitle . '</a></td>
192 192
       <td align="center" width="50">' . $catweight . '</td>
193 193
       <td align="center" width="100">' . $num_instrs . '</td>
@@ -198,26 +198,26 @@  discard block
 block discarded – undo
198 198
       </td>
199 199
     </tr>';
200 200
 
201
-            // Устанавливаем префикс
202
-            $prefix_curr .= $prefix_orig;
203
-        }
204
-
205
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
206
-            foreach ($this->tree[$key]['child'] as $childkey) {
207
-                $this->_makeCatsAdminOptions($childkey, $ret, $prefix_orig, $cidinstrids, $class, $prefix_curr);
208
-            }
209
-        }
210
-    }
211
-
212
-    /**
213
-     * @param string $prefix
214
-     * @param array  $cidinstrids
215
-     * @param int    $key
216
-     * @return string
217
-     */
218
-    public function makeCatsAdmin($prefix = '-', $cidinstrids = [], $key = 0)
219
-    {
220
-        $ret = '<table width="100%" cellspacing="1" class="outer">
201
+			// Устанавливаем префикс
202
+			$prefix_curr .= $prefix_orig;
203
+		}
204
+
205
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
206
+			foreach ($this->tree[$key]['child'] as $childkey) {
207
+				$this->_makeCatsAdminOptions($childkey, $ret, $prefix_orig, $cidinstrids, $class, $prefix_curr);
208
+			}
209
+		}
210
+	}
211
+
212
+	/**
213
+	 * @param string $prefix
214
+	 * @param array  $cidinstrids
215
+	 * @param int    $key
216
+	 * @return string
217
+	 */
218
+	public function makeCatsAdmin($prefix = '-', $cidinstrids = [], $key = 0)
219
+	{
220
+		$ret = '<table width="100%" cellspacing="1" class="outer">
221 221
     <tr>
222 222
       <th align="center" colspan="4">' . _AM_INSTR_LISTALLCATS . '</th>
223 223
     </tr>
@@ -228,216 +228,216 @@  discard block
 block discarded – undo
228 228
       <td class="head" align="center" width="150">' . _AM_INSTRUCTION_ACTION . '</td>
229 229
     </tr>';
230 230
 
231
-        // Выводим все страницы
232
-        $this->_makeCatsAdminOptions($key, $ret, $prefix, $cidinstrids);
233
-
234
-        $ret .= '</table>';
235
-
236
-        return $ret;
237
-    }
238
-
239
-    // ======================================
240
-    // Список страниц на стороне пользователя
241
-    // ======================================
242
-
243
-    /**
244
-     * @param       $key
245
-     * @param       $ret
246
-     * @param int   $currpageid
247
-     * @param array $lastpageids
248
-     * @param int   $level
249
-     */
250
-    public function _makePagesUserTree($key, &$ret, $currpageid = 0, &$lastpageids = [], $level = 0)
251
-    {
252
-
253
-        // Сохраняем значение предыдущей страницы
254
-        //static $stat_prevpages;
255
-
256
-        if ($key > 0) {
257
-
258
-            // ID страницы
259
-            $pageid = $this->tree[$key]['obj']->getVar('pageid');
260
-            // Название страницы
261
-            $pagetitle = $this->tree[$key]['obj']->getVar('title');
262
-            // Тип страницы
263
-            $pagetype = $this->tree[$key]['obj']->getVar('type');
264
-
265
-            // Дочернии категории
266
-            $page_childs = $this->getAllChild($pageid);
267
-            // Число дочерних страниц
268
-            $num_childs = count($page_childs);
269
-
270
-            // Генерируем класс
271
-            // InstrTreeNode InstrTreeIsRoot InstrTreeExpandClosed InstrTreeIsLast
272
-            $class = [];
273
-            // Данный класс должен быть у любого узла
274
-            $class[] = 'InstrTreeNode';
275
-            // Если узел нулевого уровня, добавляем InstrTreeIsRoot
276
-            if (0 === $level) {
277
-                $class[] = 'InstrTreeIsRoot';
278
-            }
279
-            // Тип узла InstrTreeExpandClosed|InstrTreeExpandLeaf
280
-            // Если у узла нет потомков - InstrTreeExpandLeaf
281
-            if (0 == $num_childs) {
282
-                $class[] = 'InstrTreeExpandLeaf';
283
-                // Если у искомого элемента есть потомки - открываем список
284
-            } elseif ($currpageid == $pageid) {
285
-                $class[] = 'InstrTreeExpandOpen';
286
-                // Если искомый элемент есть в потомках текущего, то ставим класс InstrTreeExpandOpen
287
-            } elseif (array_key_exists($currpageid, $page_childs)) {
288
-                $class[] = 'InstrTreeExpandOpen';
289
-                //
290
-            } else {
291
-                $class[] = 'InstrTreeExpandClosed';
292
-            }
293
-
294
-            // Данный класс нужно добавлять последнему узлу в каждом уровне
295
-
296
-            if (isset($lastpageids[$level]) && ($pageid == $lastpageids[$level])) {
297
-                $class[] = 'InstrTreeIsLast';
298
-            }
299
-
300
-            //$class[] = 'InstrTreeIsLast';
301
-
302
-            // Test
303
-            //$ret .= '<div id="' . $pageid . '">';
304
-
305
-            // Создаём запись
306
-            $ret .= '<li class="' . implode(' ', $class) . '">';
307
-            //
308
-            $ret .= '<div class="InstrTreeExpand"></div>';
309
-            //
310
-            $ret .= '<div class="InstrTreeContent">';
311
-
312
-            // Если это лист дерева
313
-            if (0 == $pagetype) {
314
-                $ret .= '<span class="InstrTreeEmptyPage">' . $pagetitle . '</span>';
315
-                //
316
-            } elseif ($currpageid == $pageid) {
317
-                $ret .= $pagetitle;
318
-                //
319
-            } else {
320
-                $ret .= '<a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext">' . $pagetitle . '</a>';
321
-            }
322
-
323
-            $ret .= '</div>';
324
-
325
-            // Если есть потомки
326
-            if ($num_childs > 0) {
327
-                $ret .= '<ul class="InstrTreeContainer">';
328
-            }
329
-
330
-            // Инкримент уровня
331
-            $level++;
332
-        }
333
-
334
-        // Рекурсия
335
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
336
-            foreach ($this->tree[$key]['child'] as $childkey) {
337
-                $this->_makePagesUserTree($childkey, $ret, $currpageid, $lastpageids, $level);
338
-            }
339
-        }
340
-
341
-        // Test
342
-        if ($key > 0) {
343
-            // Если есть потомки
344
-            if ($num_childs > 0) {
345
-                $ret .= '</ul>';
346
-            }
347
-            // Конец текущей записи
348
-            $ret .= '</li>';
349
-        }
350
-    }
351
-
352
-    // Находим предыдущую и следующую страницы.
353
-    // Находим последнии страницы на каждом уровне.
354
-    /**
355
-     * @param       $key
356
-     * @param int   $currpageid
357
-     * @param array $prevpages
358
-     * @param array $nextpages
359
-     * @param array $lastpageids
360
-     * @param int   $level
361
-     */
362
-    public function _makePagesUserCalc($key, $currpageid = 0, &$prevpages = [], &$nextpages = [], &$lastpageids = [], $level = 0)
363
-    {
364
-
365
-        // Сохраняем значение предыдущей страницы
366
-        static $stat_prevpages;
367
-
368
-        if ($key > 0) {
369
-            // ID страницы
370
-            $pageid = $this->tree[$key]['obj']->getVar('pageid');
371
-            // Название страницы
372
-            $pagetitle = $this->tree[$key]['obj']->getVar('title');
373
-            // Тип страницы
374
-            $pagetype = $this->tree[$key]['obj']->getVar('type');
375
-
376
-            // Если мы передали ID текущей страницы, то находить предыдудую и следующую страницы
377
-            // Не находить предыдущие и следующие для "Пустой страницы"
378
-            if ($currpageid && $pagetype) {
379
-                // Если элемент равен текущей странице
380
-                if (null !== $stat_prevpages && ($currpageid == $pageid)) {
381
-                    // Забиваем массив предыдущей страницы
382
-                    $prevpages['pageid'] = $stat_prevpages['pageid'];
383
-                    $prevpages['title']  = $stat_prevpages['title'];
384
-
385
-                    // Если предыдущий равен текущей странице
386
-                } elseif (null !== $stat_prevpages && ($currpageid == $stat_prevpages['pageid'])) {
387
-                    // Забиваем массив следующей страницы
388
-                    $nextpages['pageid'] = $pageid;
389
-                    $nextpages['title']  = $pagetitle;
390
-                }
391
-                // Заносим текущие данные в массив предыдущей страницы
392
-                $stat_prevpages['pageid'] = $pageid;
393
-                $stat_prevpages['title']  = $pagetitle;
394
-            }
395
-
396
-            // Заносим текущую страницу в массив "последних страний"
397
-            $lastpageids[$level] = $pageid;
398
-
399
-            // Инкримент уровня
400
-            $level++;
401
-        }
402
-
403
-        // Рекурсия
404
-        if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
405
-            foreach ($this->tree[$key]['child'] as $childkey) {
406
-                $this->_makePagesUserCalc($childkey, $currpageid, $prevpages, $nextpages, $lastpageids, $level);
407
-            }
408
-        }
409
-    }
410
-
411
-    //
412
-
413
-    /**
414
-     * @param int   $currpageid
415
-     * @param array $prevpages
416
-     * @param array $nextpages
417
-     * @param int   $key
418
-     * @return string
419
-     */
420
-    public function makePagesUser($currpageid = 0, &$prevpages = [], &$nextpages = [], $key = 0)
421
-    {
422
-
423
-        // Массив последней страницы на каждом уровне
424
-        // level => pageid
425
-        $lastpageids = [];
426
-
427
-        // Расчёт
428
-        $this->_makePagesUserCalc($key, $currpageid, $prevpages, $nextpages, $lastpageids);
429
-
430
-        $ret = '<div onclick="instr_tree_toggle(arguments[0])">
231
+		// Выводим все страницы
232
+		$this->_makeCatsAdminOptions($key, $ret, $prefix, $cidinstrids);
233
+
234
+		$ret .= '</table>';
235
+
236
+		return $ret;
237
+	}
238
+
239
+	// ======================================
240
+	// Список страниц на стороне пользователя
241
+	// ======================================
242
+
243
+	/**
244
+	 * @param       $key
245
+	 * @param       $ret
246
+	 * @param int   $currpageid
247
+	 * @param array $lastpageids
248
+	 * @param int   $level
249
+	 */
250
+	public function _makePagesUserTree($key, &$ret, $currpageid = 0, &$lastpageids = [], $level = 0)
251
+	{
252
+
253
+		// Сохраняем значение предыдущей страницы
254
+		//static $stat_prevpages;
255
+
256
+		if ($key > 0) {
257
+
258
+			// ID страницы
259
+			$pageid = $this->tree[$key]['obj']->getVar('pageid');
260
+			// Название страницы
261
+			$pagetitle = $this->tree[$key]['obj']->getVar('title');
262
+			// Тип страницы
263
+			$pagetype = $this->tree[$key]['obj']->getVar('type');
264
+
265
+			// Дочернии категории
266
+			$page_childs = $this->getAllChild($pageid);
267
+			// Число дочерних страниц
268
+			$num_childs = count($page_childs);
269
+
270
+			// Генерируем класс
271
+			// InstrTreeNode InstrTreeIsRoot InstrTreeExpandClosed InstrTreeIsLast
272
+			$class = [];
273
+			// Данный класс должен быть у любого узла
274
+			$class[] = 'InstrTreeNode';
275
+			// Если узел нулевого уровня, добавляем InstrTreeIsRoot
276
+			if (0 === $level) {
277
+				$class[] = 'InstrTreeIsRoot';
278
+			}
279
+			// Тип узла InstrTreeExpandClosed|InstrTreeExpandLeaf
280
+			// Если у узла нет потомков - InstrTreeExpandLeaf
281
+			if (0 == $num_childs) {
282
+				$class[] = 'InstrTreeExpandLeaf';
283
+				// Если у искомого элемента есть потомки - открываем список
284
+			} elseif ($currpageid == $pageid) {
285
+				$class[] = 'InstrTreeExpandOpen';
286
+				// Если искомый элемент есть в потомках текущего, то ставим класс InstrTreeExpandOpen
287
+			} elseif (array_key_exists($currpageid, $page_childs)) {
288
+				$class[] = 'InstrTreeExpandOpen';
289
+				//
290
+			} else {
291
+				$class[] = 'InstrTreeExpandClosed';
292
+			}
293
+
294
+			// Данный класс нужно добавлять последнему узлу в каждом уровне
295
+
296
+			if (isset($lastpageids[$level]) && ($pageid == $lastpageids[$level])) {
297
+				$class[] = 'InstrTreeIsLast';
298
+			}
299
+
300
+			//$class[] = 'InstrTreeIsLast';
301
+
302
+			// Test
303
+			//$ret .= '<div id="' . $pageid . '">';
304
+
305
+			// Создаём запись
306
+			$ret .= '<li class="' . implode(' ', $class) . '">';
307
+			//
308
+			$ret .= '<div class="InstrTreeExpand"></div>';
309
+			//
310
+			$ret .= '<div class="InstrTreeContent">';
311
+
312
+			// Если это лист дерева
313
+			if (0 == $pagetype) {
314
+				$ret .= '<span class="InstrTreeEmptyPage">' . $pagetitle . '</span>';
315
+				//
316
+			} elseif ($currpageid == $pageid) {
317
+				$ret .= $pagetitle;
318
+				//
319
+			} else {
320
+				$ret .= '<a href="' . XOOPS_URL . '/modules/' . INST_DIRNAME . '/page.php?id=' . $pageid . '#pagetext">' . $pagetitle . '</a>';
321
+			}
322
+
323
+			$ret .= '</div>';
324
+
325
+			// Если есть потомки
326
+			if ($num_childs > 0) {
327
+				$ret .= '<ul class="InstrTreeContainer">';
328
+			}
329
+
330
+			// Инкримент уровня
331
+			$level++;
332
+		}
333
+
334
+		// Рекурсия
335
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
336
+			foreach ($this->tree[$key]['child'] as $childkey) {
337
+				$this->_makePagesUserTree($childkey, $ret, $currpageid, $lastpageids, $level);
338
+			}
339
+		}
340
+
341
+		// Test
342
+		if ($key > 0) {
343
+			// Если есть потомки
344
+			if ($num_childs > 0) {
345
+				$ret .= '</ul>';
346
+			}
347
+			// Конец текущей записи
348
+			$ret .= '</li>';
349
+		}
350
+	}
351
+
352
+	// Находим предыдущую и следующую страницы.
353
+	// Находим последнии страницы на каждом уровне.
354
+	/**
355
+	 * @param       $key
356
+	 * @param int   $currpageid
357
+	 * @param array $prevpages
358
+	 * @param array $nextpages
359
+	 * @param array $lastpageids
360
+	 * @param int   $level
361
+	 */
362
+	public function _makePagesUserCalc($key, $currpageid = 0, &$prevpages = [], &$nextpages = [], &$lastpageids = [], $level = 0)
363
+	{
364
+
365
+		// Сохраняем значение предыдущей страницы
366
+		static $stat_prevpages;
367
+
368
+		if ($key > 0) {
369
+			// ID страницы
370
+			$pageid = $this->tree[$key]['obj']->getVar('pageid');
371
+			// Название страницы
372
+			$pagetitle = $this->tree[$key]['obj']->getVar('title');
373
+			// Тип страницы
374
+			$pagetype = $this->tree[$key]['obj']->getVar('type');
375
+
376
+			// Если мы передали ID текущей страницы, то находить предыдудую и следующую страницы
377
+			// Не находить предыдущие и следующие для "Пустой страницы"
378
+			if ($currpageid && $pagetype) {
379
+				// Если элемент равен текущей странице
380
+				if (null !== $stat_prevpages && ($currpageid == $pageid)) {
381
+					// Забиваем массив предыдущей страницы
382
+					$prevpages['pageid'] = $stat_prevpages['pageid'];
383
+					$prevpages['title']  = $stat_prevpages['title'];
384
+
385
+					// Если предыдущий равен текущей странице
386
+				} elseif (null !== $stat_prevpages && ($currpageid == $stat_prevpages['pageid'])) {
387
+					// Забиваем массив следующей страницы
388
+					$nextpages['pageid'] = $pageid;
389
+					$nextpages['title']  = $pagetitle;
390
+				}
391
+				// Заносим текущие данные в массив предыдущей страницы
392
+				$stat_prevpages['pageid'] = $pageid;
393
+				$stat_prevpages['title']  = $pagetitle;
394
+			}
395
+
396
+			// Заносим текущую страницу в массив "последних страний"
397
+			$lastpageids[$level] = $pageid;
398
+
399
+			// Инкримент уровня
400
+			$level++;
401
+		}
402
+
403
+		// Рекурсия
404
+		if (isset($this->tree[$key]['child']) && !empty($this->tree[$key]['child'])) {
405
+			foreach ($this->tree[$key]['child'] as $childkey) {
406
+				$this->_makePagesUserCalc($childkey, $currpageid, $prevpages, $nextpages, $lastpageids, $level);
407
+			}
408
+		}
409
+	}
410
+
411
+	//
412
+
413
+	/**
414
+	 * @param int   $currpageid
415
+	 * @param array $prevpages
416
+	 * @param array $nextpages
417
+	 * @param int   $key
418
+	 * @return string
419
+	 */
420
+	public function makePagesUser($currpageid = 0, &$prevpages = [], &$nextpages = [], $key = 0)
421
+	{
422
+
423
+		// Массив последней страницы на каждом уровне
424
+		// level => pageid
425
+		$lastpageids = [];
426
+
427
+		// Расчёт
428
+		$this->_makePagesUserCalc($key, $currpageid, $prevpages, $nextpages, $lastpageids);
429
+
430
+		$ret = '<div onclick="instr_tree_toggle(arguments[0])">
431 431
 <div>' . _MD_INSTRUCTION_LISTPAGES . '</div>
432 432
 <div><ul class="InstrTreeContainer">';
433 433
 
434
-        // Генерируем дерево
435
-        $this->_makePagesUserTree($key, $ret, $currpageid, $lastpageids);
434
+		// Генерируем дерево
435
+		$this->_makePagesUserTree($key, $ret, $currpageid, $lastpageids);
436 436
 
437
-        $ret .= '</ul>
437
+		$ret .= '</ul>
438 438
 </div>
439 439
 </div>';
440 440
 
441
-        return $ret;
442
-    }
441
+		return $ret;
442
+	}
443 443
 }
Please login to merge, or discard this patch.
page.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -29,8 +29,8 @@  discard block
 block discarded – undo
29 29
 $criteria->add(new \Criteria('pageid ', $pageid));
30 30
 $criteria->add(new \Criteria('status ', '0', '>'));
31 31
 if (0 == $pageHandler->getCount($criteria)) {
32
-    redirect_header('index.php', 3, _MD_INSTRUCTION_PAGENOTEXIST);
33
-    exit();
32
+	redirect_header('index.php', 3, _MD_INSTRUCTION_PAGENOTEXIST);
33
+	exit();
34 34
 }
35 35
 //
36 36
 unset($criteria);
@@ -42,8 +42,8 @@  discard block
 block discarded – undo
42 42
 
43 43
 // Если админ и ссылка на отключение кэша
44 44
 if (($GLOBALS['xoopsUser'] instanceof \XoopsUser) && $GLOBALS['xoopsUser']->isAdmin() && $nocache) {
45
-    // Отключаем кэш
46
-    $GLOBALS['xoopsConfig']['module_cache'][$GLOBALS['xoopsModule']->getVar('mid')] = 0;
45
+	// Отключаем кэш
46
+	$GLOBALS['xoopsConfig']['module_cache'][$GLOBALS['xoopsModule']->getVar('mid')] = 0;
47 47
 }
48 48
 
49 49
 // Задание тайтла
@@ -60,8 +60,8 @@  discard block
 block discarded – undo
60 60
 // Права на просмотр инструкции
61 61
 $categories = Xoopsmodules\instruction\Utility::getItemIds();
62 62
 if (!in_array($objInsinstr->getVar('cid'), $categories)) {
63
-    redirect_header(XOOPS_URL . '/modules/' . $moduleDirName . '/', 3, _NOPERM);
64
-    exit();
63
+	redirect_header(XOOPS_URL . '/modules/' . $moduleDirName . '/', 3, _NOPERM);
64
+	exit();
65 65
 }
66 66
 
67 67
 // Массив данных о странице
@@ -78,9 +78,9 @@  discard block
 block discarded – undo
78 78
 $footnote = $objInspage->getVar('footnote');
79 79
 // Если есть сноски
80 80
 if ($footnote) {
81
-    $pages['footnotes'] = explode('|', $objInspage->getVar('footnote'));
81
+	$pages['footnotes'] = explode('|', $objInspage->getVar('footnote'));
82 82
 } else {
83
-    $pages['footnotes'] = false;
83
+	$pages['footnotes'] = false;
84 84
 }
85 85
 // Мета-теги ключевых слов
86 86
 $pages['keywords'] = $objInspage->getVar('keywords');
@@ -89,39 +89,39 @@  discard block
 block discarded – undo
89 89
 //
90 90
 // Если админ, рисуем админлинк
91 91
 if (($GLOBALS['xoopsUser'] instanceof \XoopsUser) && $GLOBALS['xoopsUser']->isAdmin($GLOBALS['xoopsModule']->mid())) {
92
-    $pages['adminlink'] = '&nbsp;<a href="'
93
-                          . XOOPS_URL
94
-                          . '/modules/'
95
-                          . $moduleDirName
96
-                          . '/admin/instr.php?op=editpage&pageid='
97
-                          . $pages['pageid']
98
-                          . '"><img style="width:16px;" src="'. $pathIcon16 . '/edit.png" alt='
99
-                          . _EDIT
100
-                          . ' title='
101
-                          . _EDIT
102
-                          . '></a>&nbsp;<a href="'
103
-                          . XOOPS_URL
104
-                          . '/modules/'
105
-                          . $moduleDirName
106
-                          . '/admin/instr.php?op=delpage&pageid='
107
-                          . $pages['pageid']
108
-                          . '"><img style="width:16px;" src="'. $pathIcon16 . '/delete.png" alt='
109
-                          . _DELETE
110
-                          . ' title='
111
-                          . _DELETE
112
-                          . '></a>&nbsp;';
92
+	$pages['adminlink'] = '&nbsp;<a href="'
93
+						  . XOOPS_URL
94
+						  . '/modules/'
95
+						  . $moduleDirName
96
+						  . '/admin/instr.php?op=editpage&pageid='
97
+						  . $pages['pageid']
98
+						  . '"><img style="width:16px;" src="'. $pathIcon16 . '/edit.png" alt='
99
+						  . _EDIT
100
+						  . ' title='
101
+						  . _EDIT
102
+						  . '></a>&nbsp;<a href="'
103
+						  . XOOPS_URL
104
+						  . '/modules/'
105
+						  . $moduleDirName
106
+						  . '/admin/instr.php?op=delpage&pageid='
107
+						  . $pages['pageid']
108
+						  . '"><img style="width:16px;" src="'. $pathIcon16 . '/delete.png" alt='
109
+						  . _DELETE
110
+						  . ' title='
111
+						  . _DELETE
112
+						  . '></a>&nbsp;';
113 113
 } else {
114
-    $pages['adminlink'] = '&nbsp;';
115
-    // Если можно редактировать
116
-    if ($gpermHandler->checkRight($moduleDirName . '_edit', $objInsinstr->getVar('cid'), $groups, $GLOBALS['xoopsModule']->getVar('mid'))) {
117
-        $pages['adminlink'] .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/submit.php?op=editpage&pageid=' . $pages['pageid'] . '"><img style="width:16px;" src="'. $pathIcon16 . '/edit.png" alt=' . _EDIT . ' title=' . _EDIT . '></a>';
118
-    }
119
-
120
-    $pages['adminlink'] .= '&nbsp;';
121
-    // Если нет админлика
122
-    if ('[&nbsp;&nbsp;]' === $pages['adminlink']) {
123
-        $pages['adminlink'] = '';
124
-    }
114
+	$pages['adminlink'] = '&nbsp;';
115
+	// Если можно редактировать
116
+	if ($gpermHandler->checkRight($moduleDirName . '_edit', $objInsinstr->getVar('cid'), $groups, $GLOBALS['xoopsModule']->getVar('mid'))) {
117
+		$pages['adminlink'] .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/submit.php?op=editpage&pageid=' . $pages['pageid'] . '"><img style="width:16px;" src="'. $pathIcon16 . '/edit.png" alt=' . _EDIT . ' title=' . _EDIT . '></a>';
118
+	}
119
+
120
+	$pages['adminlink'] .= '&nbsp;';
121
+	// Если нет админлика
122
+	if ('[&nbsp;&nbsp;]' === $pages['adminlink']) {
123
+		$pages['adminlink'] = '';
124
+	}
125 125
 }
126 126
 // Выводим в шаблон
127 127
 $GLOBALS['xoopsTpl']->assign('insPage', $pages);
@@ -140,7 +140,7 @@  discard block
 block discarded – undo
140 140
 $nav_parent_id = array_reverse($nav_parent_id);
141 141
 $navigation    = '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/">' . $GLOBALS['xoopsModule']->name() . '</a>&nbsp;:&nbsp;';
142 142
 foreach (array_keys($nav_parent_id) as $i) {
143
-    $navigation .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/index.php?cid=' . $nav_parent_id[$i]->getVar('cid') . '">' . $nav_parent_id[$i]->getVar('title') . '</a>&nbsp;:&nbsp;';
143
+	$navigation .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/index.php?cid=' . $nav_parent_id[$i]->getVar('cid') . '">' . $nav_parent_id[$i]->getVar('title') . '</a>&nbsp;:&nbsp;';
144 144
 }
145 145
 $navigation .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/index.php?cid=' . $objInscat->getVar('cid') . '">' . $objInscat->getVar('title') . '</a>&nbsp;:&nbsp;';
146 146
 $navigation .= '<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/instr.php?id=' . $pages['instrid'] . '">' . $objInsinstr->getVar('title') . '</a>';
@@ -172,9 +172,9 @@  discard block
 block discarded – undo
172 172
 
173 173
 // Рейтинг
174 174
 if (xoops_getModuleOption('userat', 'instruction')) {
175
-    $xoopsTpl->assign('insUserat', true);
175
+	$xoopsTpl->assign('insUserat', true);
176 176
 } else {
177
-    $xoopsTpl->assign('insUserat', false);
177
+	$xoopsTpl->assign('insUserat', false);
178 178
 }
179 179
 
180 180
 // Мета теги
Please login to merge, or discard this patch.