aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/mayor-wiki/wiki/data/pages/base/menue.txt
blob: d050b7a057a7fca5f1da902dc05fd4fa102c3eff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
====== A menü ======

A keretrendszer egy az aktuális modultól és kiválasztott nyelvtől függő, legfeljebb három szintű menüt generál.

===== A menü felépítése =====


==== A fájlok csatolási sorrendje ====

A menüt felépítő állományok az ''include/menu'' könyvtár alatt helyezkednek el.
elsőként a ''include/menu/base.php'' töltődik be. Ennek feladata, hogy a többi állományt kiválassza és betöltse.
Elsőként az ''include/menu/$policy/$lang/base.php'', ennek hiányában az ''include/menu/$policy/_DEFAULT_LANG/base.php'' kerül betöltésre. A következő lépés a ''include/menu/$policy/$lang/module-*.php'' állományok csatolása. Az utolsó lépés az [[hogyan:menu_testreszabas|egyedi menü beállítások]] beolvasása.

Az oldal megjelenítésekor a ''skin/$skin/base/html/base.phtml'' állomány ''mayor_menu()'' függvénye írja ki a menü-t a ''$MENU'' tömb alapján. A tömben benne van az egész menürendszer, de a függvény nem feltétlenül építi rakja ki az összes menüpontot, a "classic" skin például az almenűket csak az aktuális ''$page'', ''$sub'' és ''$f'' szerint rakja ki.


==== A menü tárolására szolgáló adatszerkezet - a $MENU tömb ====

=== Egy menüpont (item, tétel) felépítése ===
  * txt - a megjelenő szöveg
  * [url] 
        - ha nincs: a $MENU alapján kiolvasható PSF-re mutat
        - ha &-tel kezdődik: az lőzőhöz fúzzük
        - ha http-vel kezdődik: a megadott URL-t vesszük egy az egyben (sessionID, lang, skin stb nélkül)
        - egyéb esetben: az adott linket használjuk átadva a fontos paramétereket (sessionID, policy, lang, skin)
  * [get] - az utolsó esetben az átadandó paraméterek listája (pl. sessionID, lang, skin)



=== A $MENU tömb felépítése ===
<code php>
    $MENU = array(
        $page1 => array(                        // Az első szinten a modulok menüpontjai
            array('txt1'[,'url1']),
            [array('txt2'[,'url2']), ...]
        ),
        [$page2 => array( ... ), ...]
        $item1 => array(                        // Az elsp szinten nem modulhoz tartozó tételek
            array('txt1'[,'url1']),
            [array('txt2'[,'url2']), ...]
        ),
        [$item2 => array( ... ), ...]
        'modules' => array(                     // 'modules'-en belul csak page-ek vannak
            $page1 => array(
                'sub' => array(                 // 'sub'-on belül csak sub-ok vannak
                    $sub1 => array(
                        $f1 => array(
                            array('txt1'[,'url1']),
                            [array('txt2'[,'url2']), ...]
                        ),
                        [$f2 => array(
                            array('txt1'[,'url1']),
                            [array('txt2'[,'url2']), ...]
                        ), ...]
                    ),
                    [$sub2 => arrray( ... ), ...]
                ),
                [$f1 => array(
                    array('txt1'[,'url1']),
                    [array('txt2'[,'url2']), ...]
                ), ...]
            ),
            [$page2 => array( ... ), ...]
        )
    )
</code>

Kirajzolva:
<code php>
  $M[$page1][0] | $M[$page1][1] ... | $M[$page2][0] | ... | $M[$item1][0] | $M[$item1][1] ...
  $M['modules'][$page][$f1][0] | $M['modules'][$page][$f1][1] ... | $M['modules'][$page][$f2][0] | ...
  $M['modules'][$page]['sub'][$sub][$f1][0] ... $M['modules'][$page]['sub'][$sub][$f2][0]
</code>

Például:
<code php>
    $MENU['modules']['login'] = array(
        'sub' => array(
            'sub1' => array(
                'f11' => array(
                    array('txt' => 'Kakukk'),
                    array('txt' => 'Tojás', 'url'=>'http://')
                )
            ),
            'sub2' => array(
                'f21' => array(
                    array('txt' => 'Cica'),
                )
            )
        ),
        'login' => array(
            array('txt' => 'Szülői bejelentkezés','url' => '&toPolicy=parent'),
            array('txt' => 'Bejelentkezés','url' => '&toPolicy=private'),
        )
    );
</code>