aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-orig/mayor-wiki/wiki
diff options
context:
space:
mode:
authorM.Gergo2019-03-08 23:32:47 +0100
committerM.Gergo2019-03-08 23:32:47 +0100
commitc0f79397dd75e03a7a40303f82926e8187697d07 (patch)
treee945a10ef6479e0f8720ad9cd4947b6a85b78d6e /mayor-orig/mayor-wiki/wiki
parentf51c9ed2abe5c68211bb3736be5f70b1fe2c9ec0 (diff)
downloadmayor-c0f79397dd75e03a7a40303f82926e8187697d07.tar.gz
mayor-c0f79397dd75e03a7a40303f82926e8187697d07.zip
Rev: 4455
Diffstat (limited to 'mayor-orig/mayor-wiki/wiki')
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/azonositas.txt74
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/backend.txt11
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ad.txt111
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ldap.txt26
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/hibakezeles.txt20
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/mayor-base.txt16
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/menue.txt96
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/nyelv.txt5
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/oldalszerkezet.txt115
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/policy.txt6
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/policy/parent.txt3
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/policy/private.txt3
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/policy/public.txt3
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/base/regisztracio.txt41
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/gyik/jogi_hatter.txt157
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/gyik/mayorca.txt77
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/gyik/naplo.txt408
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/asc-ctrl-shift-e.txt53
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/beiratkozas.txt61
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/dobozok.txt55
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/evvegi_teendok.txt63
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/facebook.txt28
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_evvegi_elrejtese.txt33
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_teendok.txt49
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznaloi_azonositok_generalasa.txt94
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznalonevek_megvaltoztatasa.txt71
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/google.txt26
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/haladasi_utolag.txt41
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hasznos_sql_gyujtemeny.txt159
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hataridok.txt84
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jelszoemlekezteto.txt65
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jogviszony.txt49
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/karbantartas.txt78
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kepesitesek.txt75
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kozossegi_szolgalat.txt35
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/mayor_szkript.txt40
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/menu_testreszabas.txt25
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarend.txt97
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarendi_hetek_atallitasa.txt10
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/osztaly_heti_idokeret.txt53
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/specialis_tanitasinap.txt25
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/sulix.txt56
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese.txt110
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese_kiegeszitesekkel.txt92
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_azonositok_generalasa.txt149
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tantargyfelosztas.txt189
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tanusitvany.txt48
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/targy_atnevezes.txt102
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-debian.txt33
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-hw.txt15
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-man.txt521
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites.txt105
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_diak.txt27
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_skin.txt43
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/visszatoltes_mentesbol.txt176
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/hogyan/wiki_sajat_gepre.txt36
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatkezeles.txt355
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatszolgaltatas.txt64
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatvedelem.txt174
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/bizonyitvany.txt18
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/elszamolas.txt30
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/ertekeles.txt48
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/evismetles.txt10
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/fejlesztes.txt119
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/hianyzas.txt126
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/iskolavaltas.txt124
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyelvi_elokeszito.txt18
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyomtatvanyok.txt109
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/oktatas.txt95
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/osztalyozovizsga.txt192
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogiai_program.txt64
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogus_munkakor.txt74
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/sni.txt265
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanitasi_nap.txt9
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanuloi_jogviszony.txt171
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zaradekok.txt261
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zarojegyek.txt645
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/koncepcio.txt31
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/modulok.txt8
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo.txt11
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/azonositok.txt21
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/fillhaladasi.txt23
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/import.txt23
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/rpcprivilege.txt35
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/szemeszterek.txt24
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/tanevek.txt82
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/csoportok.txt27
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/ertekeles/kerdoivbetoltes.txt146
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/export/bizonyitvany.txt12
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/fogadoora.txt22
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elmaradas.txt16
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elszamolas.txt47
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/haladasi.txt16
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/minuszora.txt16
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/osszevonas.txt31
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/pluszora.txt21
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/specialis.txt15
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/stat.txt46
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/hianyzas/osztaly.txt48
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/admin.txt28
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/hibabejelento.txt24
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/hirnok/hirnokfeliratkozas.txt68
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/diaktankorjelentkezes.txt10
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/kepzes.txt31
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/munkakozosseg.txt21
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/osztaly.txt109
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tanar.txt67
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankordiak.txt37
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankorszemeszter.txt22
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankortanar.txt8
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/valtas.txt7
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/mayor-naplo.txt34
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/szovegesertekeles.txt71
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/torzslap.txt50
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml.txt16
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml_tankoeroek_nelkuel.txt20
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/ascexport.txt102
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarend.txt3
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendbetolto.txt31
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendtankor.txt9
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendteremmodositas.txt9
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/tanarorarend.txt10
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/vegzosorarendlezaras.txt15
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo.txt3
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/diak.txt11
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/dolgozat.txt41
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/jegy.txt29
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szempontrendszer.txt32
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szovegesertekeles.txt11
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/tankor.txt47
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/vizsga.txt33
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/small_faces.txt104
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/fogadoora.txt22
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/munkaterv.txt92
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorblokk.txt10
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorcsoport.txt26
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetinfo.txt15
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetleadas.txt12
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetmodositas.txt58
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenettankor.txt44
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/ujtanmenet.txt7
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/naplo/toolbar.txt17
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/portal/hirek/hirekadmin.txt25
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/portal/telepites.txt75
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/session/createaccount.txt13
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/session/groupinfo.txt6
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/sidebar.txt1
-rw-r--r--mayor-orig/mayor-wiki/wiki/data/pages/start.txt7
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/COPYING340
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/README10
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/plugin.info.txt7
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/bold.php39
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/code.php39
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/color.php236
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/deleted.php39
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/email.php47
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/image.php55
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/italic.php39
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/link.php60
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/monospace.php39
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/olist.php90
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/quote.php73
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/size.php104
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/ulist.php72
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/underline.php39
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/VERSION.txt1
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/default.php17
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/metadata.php17
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/design.css1029
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/detail.php92
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/footer.html70
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/admin.pngbin0 -> 1105 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/backlink.pngbin0 -> 926 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/create.pngbin0 -> 685 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/delicious.gifbin0 -> 129 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/digg.gifbin0 -> 958 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/edit.pngbin0 -> 1061 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/google.gifbin0 -> 944 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/history.pngbin0 -> 1285 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/index.pngbin0 -> 892 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/login.pngbin0 -> 1073 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/previous.pngbin0 -> 915 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/profile.pngbin0 -> 904 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/recent.pngbin0 -> 1161 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/show.pngbin0 -> 547 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/subscribe.pngbin0 -> 936 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/top.pngbin0 -> 948 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/unsubscribe.pngbin0 -> 933 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/black_arrow.gifbin0 -> 81 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/faded_background.pngbin0 -> 11180 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/favicon.pngbin0 -> 767 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/find.gifbin0 -> 1112 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_background.pngbin0 -> 245 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_bc.pngbin0 -> 185 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_logo.pngbin0 -> 241 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_status.pngbin0 -> 197 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/user_icon.pngbin0 -> 1113 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/wiki_logo.pngbin0 -> 5177 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/bullet.gifbin0 -> 51 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-cc.gifbin0 -> 1231 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-css.pngbin0 -> 299 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-donate.gifbin0 -> 200 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-dw.pngbin0 -> 427 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-php.gifbin0 -> 269 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-rss.pngbin0 -> 280 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-xhtml.pngbin0 -> 321 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/buttonshadow.pngbin0 -> 257 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/closed.gifbin0 -> 54 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon.icobin0 -> 1406 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_blue.icobin0 -> 1406 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_green.icobin0 -> 1406 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_plain.icobin0 -> 7406 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/inputshadow.pngbin0 -> 155 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/link_icon.gifbin0 -> 942 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/mail_icon.gifbin0 -> 918 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/open.gifbin0 -> 54 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/admin.pngbin0 -> 1018 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/backlink.pngbin0 -> 727 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/create.pngbin0 -> 961 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/delicious.gifbin0 -> 129 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/digg.gifbin0 -> 958 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/edit.pngbin0 -> 961 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/google.gifbin0 -> 944 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/history.pngbin0 -> 1104 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/index.pngbin0 -> 818 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/login.pngbin0 -> 836 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/previous.pngbin0 -> 824 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/profile.pngbin0 -> 999 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/recent.pngbin0 -> 1009 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/show.pngbin0 -> 503 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/subscribe.pngbin0 -> 955 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/top.pngbin0 -> 992 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/unsubscribe.pngbin0 -> 921 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/faded_background.pngbin0 -> 29017 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_background.pngbin0 -> 246 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_bc.pngbin0 -> 203 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_logo.pngbin0 -> 198 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_status.pngbin0 -> 151 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/wiki_logo.pngbin0 -> 7948 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/admin.pngbin0 -> 1105 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/backlink.pngbin0 -> 1007 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/create.pngbin0 -> 685 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/delicious.gifbin0 -> 129 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/digg.gifbin0 -> 958 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/edit.pngbin0 -> 1061 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/google.gifbin0 -> 944 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/history.pngbin0 -> 1144 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/index.pngbin0 -> 892 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/login.pngbin0 -> 1111 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/previous.pngbin0 -> 822 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/profile.pngbin0 -> 904 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/recent.pngbin0 -> 1370 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/show.pngbin0 -> 547 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/subscribe.pngbin0 -> 936 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/top.pngbin0 -> 768 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/unsubscribe.pngbin0 -> 933 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/black_arrow.gifbin0 -> 81 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/faded_background.pngbin0 -> 5964 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/favicon.pngbin0 -> 667 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/find.gifbin0 -> 1209 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_background.pngbin0 -> 247 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_bc.pngbin0 -> 185 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_logo.pngbin0 -> 244 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_status.pngbin0 -> 197 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/user_icon.pngbin0 -> 995 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/wiki_logo.pngbin0 -> 4967 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/tocdot2.gifbin0 -> 810 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/windows.gifbin0 -> 223 bytes
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/builder.js131
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/controls.js835
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/dragdrop.js944
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/effects.js1090
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/prototype.js2515
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/scriptaculous.js51
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/slider.js278
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/en/settings.php22
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/hu/settings.php22
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/it/settings.php21
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/layout.css232
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/main.php362
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/media.css204
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/mediamanager.php44
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/print.css236
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/rtl.css111
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style.ini147
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_blue.ini147
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_green.ini147
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_plain.ini147
-rw-r--r--mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/tplfn_sidebar.php97
289 files changed, 19815 insertions, 0 deletions
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/azonositas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/azonositas.txt
new file mode 100644
index 00000000..75172f65
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/azonositas.txt
@@ -0,0 +1,74 @@
+====== A felhasználók azonosítása ======
+
+A felhasználók azonosítása hozzáférési szintenként ([[policy]]) külön szabályozható.
+
+Az adott [[policy]] beállításai az ''config/$policy-conf.php'' állományban definiált ''$AUTH'' tömbben tárolódnak.
+
+
+
+
+===== Opciók =====
+
+ * ''$AUTH[$policy]['backend']''
+A felhasználói adatok tárolását végző háttéradatbázis típusa. Lehetséges értékei: [[base:backend:ldap]], [[base:backend:ad]], [[base:backend:mysql]], [[base:backend:file]]
+
+ * ''$AUTH[$policy]['authentication']''
+Az adott policy-ben kötelező-e az azonosítás. Lehetséges értékei: required (kötelező), optional (opcionális), none (nincs)
+
+ * ''$AUTH[$policy]['onExpired']''
+Mi történjen nem letiltott, delejárt jelszó esetén? Lehetséges értékei: force update (kötelező jelszóváltoztatás), warning (figyelmeztető üzenet), none (semmi)
+
+ * ''$AUTH[$policy]['onDisabed']''
+Mi történjen letiltott azonosító esetén? Lehetséges értékei: refuse (utasítsuk vissza), none (ne történjen semmi - azaz engedjük be)
+
+ * ''$AUTH[$policy]['enableSelfPasswordChange']''
+Engedélyezett-e a jelszó felhasználó általi megváltoztatása (''onExpired=force update'' esetén szükséges!)? Lehetséges értékei: true (igen), false (nem)
+
+ * ''$AUTH[$policy]['createAccount']''
+Azonosító létrehozásának módja. Lehetséges értékei: byRegistration (regisztrációval), byAdmin (adminisztrátor által)
+
+ * ''$AUTH[$policy]['adminGroup']''
+Adminisztrátor csoport megadása (azonosító).
+
+ * ''$AUTH[$policy]['categories']''
+A policy-ban érvényes fő kategóriákat felsoróló tömb. ''private'' esetén például: ''array('tanár','diák','titkárság','egyéb')''
+
+ * ''$AUTH[$policy]['accountAttrs']''
+A fontos account attribútumokat felsoroló tömb (backend-től is függhet!). Például: ''array('studyId','mail','telephoneNumber')''
+
+==== Shadow ====
+
+ * ''$AUTH[$policy]['shadowLastChange']''\\
+Az utolsó jelszóváltoztatás időpontja (1970-01-01 óta eltelt napok számával megadva).
+ * ''$AUTH[$policy]['shadowMin']''\\
+A jelszó érvényességének minimális ideje - **nem használjuk**.
+ * ''$AUTH[$policy]['shadowMax']''\\
+A jelszó érvényességi ideje napokban. Az itt megadott érték határozza meg, hogy hány naponta kell jelszót változtatni. Ha üres, vagy nulla értékű, akkor nem vesszük figyelembe. Ilyenkor a ''shadowInactive'' értéket sem vesszük figyelembe.
+ * ''$AUTH[$policy]['shadowWarning']''\\
+A jelszó érvényességének lejárata előtt hány nappal kezdjük figyelmeztetni a felhasználót.
+ * ''$AUTH[$policy]['shadowExpire']''\\
+A jelszó érvényességének lejárati időpontja (1970-01-01-től eltelt napok számával megadva).
+Ha üres vagy nulla, akkor nem vesszük figyelembe!
+ * ''$AUTH[$policy]['shadowInactive']''\\
+A jelszó érvényességének lejárta után még hány napig nem kerül letiltásra az azonosító. Ha a ''shadowMax'' és a ''shadowExpire'' is nulla, vagy üres, akkor nem vesszük figyelembe.
+
+
+
+Lássuk hogyan működnek ezek a keretrendszerben!
+Haladjunk végig időrendben, hogy mikor mi fog történni:
+ * Ha ''shadowLastchange+shadowMax-shadowWarning'' után, de ''shadowLastchange+shadowMax'' előtt vagyunk, ''onExpire<>none'' és ''shadowMax<>0'', akkor figyelmezetést küldünk, hogy le fog járni a jelszó. Hasonlóan ''shadowExpire-shadowWarning'' után és ''shadowExpire'' előtt is.
+ * Ha ''shadowLastchange+shadowMax'' után vagyunk, ''shadowMax<>0'', vagy ''shadowExpire'' után vagyunk és ''onExprired<>none'', akkor figyelmeztetést küldünk, hogy lejárt a jelszó.
+ * Ha még ''shadowLastchange+shadowMax+shadowInactive'' és ''shadowExpire+shadowInactive"" előtt vagyunk, ''shadowMax<>0'' és ''onDisabled=refuse'', akkor figyelmeztetést küldünk, hogy az azonosító le lesz tiltva.
+ * Ha már ''shadowLastchange+shadowMax+shadowInactive'' után vagyunk, ''shadowMax<>0'' és ''onDisabled=refuse'', akkor nem engedjük belépni.
+ * Ha ''onDisabled=refuse'' és ''shadowExpire+shadowInactive'' után vagyunk, akkor nem engedjük belépni.
+
+
+Tehát lejárat szempontjából a ''shadowExpire'' és a ''shadowLastChange+shadowMax'' közül a kisebb lesz érvényes.
+
+
+----
+
+A backend függő beállításokat lásd a backend leírásánál.
+
+
+====== Facebook connect ======
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/backend.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/backend.txt
new file mode 100644
index 00000000..df4f2914
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/backend.txt
@@ -0,0 +1,11 @@
+====== Háttéradatbázisok (backend-ek) ======
+
+A keretrendszer a felhasználói azonosításhoz többféle backend-et használhat. A különböző [[policy|hozzáférési szintek]]en lehet különböző backend-et használni.
+
+Tervezett backend-ek:
+ * [[base:backend:mysql]] - MySQL alapú, az LDAP-nál könnyebben kezelhető háttéradatbázis típus - ez az alapértelmezett backend
+ * [[base:backend:ldap]] - OpenLDAP alapú háttéradatbázis, mely használható Unix/Linux rendszerek felhasználói adatbázisaként is működni (libpam-ldap, libnss-ldap)
+ * [[base:backend:ad]] - Microsoft Active Directory alapú háttéradatbázis
+ * [[base:backend:file]] - Inkább csak tesztelésre használatos backend típus
+
+A keretrendszer több függvényt backendtől függő módon valósít meg. Az ezeket megvalósító programrészek az ''include/backend///backend_nev//'' könyvtár alatt találhatók.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ad.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ad.txt
new file mode 100644
index 00000000..b758809a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ad.txt
@@ -0,0 +1,111 @@
+
+====== Microsoft Active Directory backend ======
+
+A MaYoR keretrendszer az azonosítók és csoportok adatait képes AD-ből is venni. Mi szükséges ehhez?
+
+===== Módosítások az AD-ben =====
+
+Néhány egyszerű módosítást, bővítést el kell végeznünk az AD címtárban.
+
+==== mayor szervezeti egység létrehozása ====
+
+Nem kötelező, de célszerű lehet külön szervezeti egységet (OU) felvenni a mayor-hoz kapcsolódó csoportok, esetleg az admin felhasználó tárolására.
+
+ OU=mayor,DC=your,DC=domain
+
+==== A keretrendszer működtetéséhez szükséges felhasználói fiókok létrehozása ====
+
+Egyes műveletekhez szükséges, hogy a keretrendszer egy emelt jogosultságú felhasználóval tudjon csatlakozni az AD-hoz. Ehhet hozzunk létre külön azonosítót:
+
+ CN=MaYoROperator,OU=mayor,DC=your,DC=domain
+
+Majd tegyük be az **Account Operators** (Fiókfelelősök) csoportba.
+
+A biztonságot fokozhatja, ha létrehozunk a keretrendszer számára egy olyan azonosítót is, amelyik csak normál olvasási joggal rendelkezik a címtárban.
+Ekkor a program azokhoz a feladatokhoz, melyekhez elegendő az olvasási jog, ezt az azonosítót fogja használni.
+
+ CN=MaYoRUser,OU=mayor,DC=your,DC=domain
+
+==== Csoportok létrehozása =====
+
+A MaYoR rendszer igényel néhány felhasználói csoportot. Ezeket létrehozhatjuk a ''mayor'' tároló alatt:
+
+ CN=diak,OU=mayor,DC=your,DC=domain
+ CN=tanar,OU=mayor,DC=your,DC=domain
+ CN=titkarsag,OU=mayor,DC=your,DC=domain
+ CN=diakadmin,OU=mayor,DC=your,DC=domain
+ CN=uzenoadmin,OU=mayor,DC=your,DC=domain
+ CN=vezetoseg,OU=mayor,DC=your,DC=domain
+ CN=naploadmin,OU=mayor,DC=your,DC=domain
+ ...
+
+==== Az oktatási azonosító tárolása ====
+
+A MaYoR keretrendszer az oktatási azonosítót használja arra a célra, hogy a felhasználói azonosítókat és a naplóban szereplő diákokat, tanárokat
+megfeleltesse egymással. Ezért szükséges, hogy a felhasználói fiókok egy attribútumát az oktatási azonosító tárolására használjuk. Hogy melyik
+attribútumot használjuk erre a célra, az szabadon megválasztható, a konfigurációs file-ban megadható (''adsStudyIdAttr'').
+A javasolt, alapértelmezett mező erre a célra a ''serialnumber''.
+
+===== Ellenőrzés 1: LDAP lekérdezés =====
+
+Ellenőrzés képpen aa MaYoR szerverről próbáljunk lekérdezni AD adatokat parancssorból, valahogy így:
+ ldapsearch -H ldap://ad.your.domain -u -x -D "CN=MaYoRUser,OU=mayor,DC=your,DC=domain" -b DC=your,DC=domain '(&(objectclass=person)(cn=MaYoRUser))' -w jelszó
+
+Ha a lekérdezés eredményes, akkor továbbléphetünk. A fenti lekérdezés kódolatlan LDAP kapcsolatot használt, jelszavunk tehát titkosítatlanul utazott a hálózaton.
+Ezen mindenképp változtatni kell, a módosításokhoz a Microsoft AD - nagyon helyesen - meg is követeli a biztonságos kapcsolatot.
+
+===== Tanűsítvány telepítése =====
+
+Első körben tehát biztosítani kell, hogy LDAPS protokollal elérhető legyen az AD. Ehhez készítenünk/vásárolnuk és telepítenünk kell egy tanúsítványt a címtárba.
+Egy leírás erről: [[http://support.microsoft.com/kb/321051]]
+
+Ha saját (pl. MaYoR Hungary által hitelesített) tanúsítványt használtunk, akkor a hitelesítőt is el kell fogadtatnunk, fel kell vennünk a Windows szerveren.
+
+===== Kliens oldali beállítások =====
+
+/etc/ldap/ldap.conf
+ BASE dc=your,dc=domain
+ URI ldaps://ad.your.domain:636
+ TLS_CACERTDIR /etc/ssl/certs
+
+Ha saját (pl. MaYoR Hungary által hitelesített) tanúsítványt használtunk, akkor a hitelesítőt is el kell fogadtatnunk, fel kell vennünk a kliensen is. Ehhez másoljuk a hitelesítő
+tanúsítványát a ''/usr/share/ca-certificates/'' alá új alkönyvtárba (pl. ''mayor.hu''), majd készítsünk szimbolikus linket az elhelyezett file-ra a
+''/etc/ssl/certs'' alá (pl. ''MaYoR.pem.crt'' néven), és egészítsük ki a ''/etc/ldap/ldap.conf'' állományt:
+
+ TLS_CACERT /etc/ssl/certs/MaYoR.pem.crt
+
+===== Ellenőrzés 2: Lekérdezés LDAPS-sel =====
+
+A korábbihoz hasonlóan ellenőrizzük, hogy a telepített tanúsítványokkal megy-e LDAPS-sel a lekérdezés:
+ ldapsearch -H ldaps://ad.your.domain:636 -u -x -D "CN=MaYoRUser,OU=mayor,dc=your,dc=domain" -b dc=your,dc=domain '(&(objectclass=person)(cn=MaYoRUser))' -w jelszó
+
+===== MaYoR konfigurálás =====
+
+Az utolsó lépés, hogy a ''/var/mayor/config/private-conf.php'' állományban az erre vonatkozó konfigurációs beállításokat felvegyük, kitöltsük:
+
+ #Active Directory Backend példa konfig
+ 'backend' => 'ads',
+ 'adsHostname' => 'ldaps://your.domain:636', // Jelszóváltoztatáshoz kötelező az ldaps
+ 'adsBaseDn' => 'DC=your,DC=domain',
+ 'adsUser' => 'CN=MaYoRUser,OU=mayor,DC=your,DC=domain', // Olvasási jog az AD-ben - Normál user
+ 'adsPw' => 'jelszó',
+ 'adsAccountOperatorUser' => 'CN=Operator,OU=mayor,DC=your,DC=domain', // Account Operators (Fiókfelelősök) csoport tag pl (jelszóváltoztatás)
+ 'adsAccountOperatorPw' => 'jelszó',
+ 'adsUserObjectClass' => 'person', // Userek objectum osztálya
+ 'adsGroupObjectClass' => 'group', // Csoportok objectum osztálya
+ 'adsStudyIdAttr' => 'serialnumber', // Az oktatási azonosítót tároló attribútum (studyId)
+ 'adsContainers' => array(
+ 'ou=diak,dc=your,dc=domain' // Azok a tárolók, amikebe kerülhetnek a létrehozandó csoportok és felhasználói azonosítók
+ 'ou=tanar,dc=your,dc=domain' // - már ha a MaYoR-ból szeretnénk azonosítókat felvenni -
+ 'ou=titkarsag,dc=your,dc=domain'
+ ),
+ 'adminGroup' => 'Fiókfelelősök', // A felhasználói azonosítókat kezelők köre a MaYoR-ban - lehet szűkebb csoport is
+ 'cacheable' => true, // bizonyos lekérdezések eredményét egy ideig eltárolja a MaYoR ...
+
+===== Korlátok, kérdések =====
+
+ * A jelszavakra vonatkozó szabályok az AD és a MaYoR együttes szabályozásából adódnak, konkurens szabályok esetén a szigorúbb érvényesül.
+ * A ''diakadmin'' csoport tagjainak arra kell jogot adni, hogy a diákok jelszavait tudja változtatni, erre a funkcióra lett kitalálva ez a csoport. De hogy ezt hogy kell, azt valaki MS guru megírhatná :) ...
+ * Tapasztalataink szerint a Fiókfelelősök jelszavát nem engedi LDAP-n keresztül megváltoztatni az AD. Tud ilyen korlátozásról valaki valamit?
+ * Az Napló/Admin/Azonosító generálás oldal valamiért nagyon lassú. De legalább működik. :-)
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ldap.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ldap.txt
new file mode 100644
index 00000000..1e292b24
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/backend/ldap.txt
@@ -0,0 +1,26 @@
+====== ldap backend ======
+
+
+===== Rendszer-követelmények =====
+
+ * OpenLDAP 2.*
+ * Az csak ékezettelen azonosítókat tudunk létrehozni
+
+===== MaYoR schema =====
+
+Az ldap backend-hez saját sémát készítettünk, mely a Unix/Linux környzetekben felhasználói azonosításra használt posicAccount és posixGroup objektum osztályokra épül, azokat bővíti újabb attribútumokkal. A schema file-t célszerűen a ''/etc/ldap/mayor/schema/mayor.schema'' szokás helyezni (eredetileg az ''install/base/ldap'' alatt található). A schema eredetileg úgy jött létre, hogy képes legyen tárolni az összes fontos személyes és csoport adatot. A mayor 3.0 verziójától kezdve ezeket nem használjuk ki.
+
+===== Konfigurációs beállítások =====
+
+A beállításokat az ''include/config/$policy-conf.php''-ban definiált ''$AUTH'' globális tömb tartalmazza.
+
+ * ''$AUTH[$policy]['ldap hostname']''
+Az LDAP kiszolgáló host neve, vagy IP címe. Általában 'localhost'.
+
+ * ''$AUTH[$policy]['ldap protocol version']''
+Az LDAP lekérdezésekhez használt protokol verziószáma. Erősen ajánlott: 3.
+
+ * ''$AUTH[$policy]['ldap base dn']''
+Az adatok eléréséhez szükséges gyökér bejegyzés. Általában ''o=intezmeny,c=hu'' alakú.
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/hibakezeles.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/hibakezeles.txt
new file mode 100644
index 00000000..336e4ae3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/hibakezeles.txt
@@ -0,0 +1,20 @@
+====== Hibakezelés (alert) ======
+
+A keretrendszer a ''$alert[]'' paraméteren keresztül képes a hiba- és egyéb figyelmeztető-üzenetek kezelésére.
+Az $alert[$i] felépítése: típus:hiba[:param1[:param2[:param3]]]
+
+típus:
+ * alert : javaScript alert
+ * message : hibaüzenet után az oldal betöltődik
+ * page : hibaüzenet után az oldal nem töltődik be
+ * info : információs üzenet
+
+hiba:
+A lehetséges hiba típusok policy (hozzáférési szint) és nyelv (lang) függően épülnek fel és a ''$ALERT_MSG'' tömbben tárolódnak. A tömböt az ''include/alert/$lang/base.php''-ben hozza létre a rendszer, majd bővíti az ''include/alert/$lang/base.php'', ''include/alert/$lang/$backend.php'' és ''include/alert/$lang/module-$page.php'' állományok csatolásával.
+
+Ismeretlen hiba string esetén a megjelenítő függvény az ''default'' hibaüzenetet írja ki, hozzáfűve az ismeretlen hiba stringet, paraméter listát.
+
+A hibaüzenetet a ''skin/$skin/base/html/alert.phtml'' állomány ''html_alert()'' függvénye írja ki. Ennek visszatérési érték dönti el, hogy megjelenjen a lap további része (''true''), vagy ne (''false'').
+
+A hibaüzenethez csatolt paramétereket a függvény behelyettesíti a ''%0'', ''%1%'' illetve ''%2%'' stringek helyére a hibaüzenet szövegébe, vagy ezek hiányában a hibaüzenet után írja ki - zárójeles megjegyzésként - őket.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/mayor-base.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/mayor-base.txt
new file mode 100644
index 00000000..aff20b15
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/mayor-base.txt
@@ -0,0 +1,16 @@
+====== A keretrendszer ======
+===== mayor-base =====
+
+A keretrendszer fő szolgáltatásai:
+ * több hozzáférési szint ([[base:policy:private]], [[base:policy:parent]], [[base:policy:public]])
+ * felhasználó [[azonosítás]]
+ * felhasználói adatok kezelése, többféle háttéradatbázissal ([[backend]]-el)
+ * több [[nyelv]] támogatása
+ * többféle kinézet ([[skin]]) támogatása
+ * [[oldalszerkezet]] kialakítása (fájlok csatolási sorrendje)
+ * [[modulok]] beépítésének lehetősége
+ * három szintű, nyelv és modul függő [[menü]]
+ * nyelv és modul függő [[hibakezelés]]
+
+A modulok ezen szolgáltatásokra épülve bővítik a rendszer szolgáltatásait.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/menue.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/menue.txt
new file mode 100644
index 00000000..d050b7a0
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/menue.txt
@@ -0,0 +1,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>
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/nyelv.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/nyelv.txt
new file mode 100644
index 00000000..8f6eb5ea
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/nyelv.txt
@@ -0,0 +1,5 @@
+====== Nyelvek kezelése ======
+
+A nyelvek kezelésére a keretrendszer biztosít egy ''$lang'' nevű paramétert. A választható nyelvek listáját az ''include/config/main-config.php'' állomány tartalmazza. A teljes nyelvi támogatáshoz el kell készíteni a nyelvi fájlok adott nyelvű változatát - ezek a ''lang/$lang'' könyvtár alatt vannak -, valamint a [[menü]] és a [[hibakezelés]] adott nyelvű állományait.
+
+Amennyiben egy nyelvi álomány hiányzik, akkor a keretrendszer automatikusan az alapértelmezett nyelv megfelelő állományával helyettesíti. Ez a helyettesítés nem igaz a [[menü]] állományokra, mert előfordulhat, hogy a nyelvtől függően a menürendszer is változik. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/oldalszerkezet.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/oldalszerkezet.txt
new file mode 100644
index 00000000..624c40a0
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/oldalszerkezet.txt
@@ -0,0 +1,115 @@
+====== Oldalszerkezet ======
+
+Itt röviden összefoglaljuk milyen sorrendben kerülnek csatolásra az eyes állományok, majd részletezzük az egyes elemek szerepét.
+
+
+
+
+===== Az állományok csatolási sorrendje =====
+ index.php
+ include/base/config.php
+ ../config/main-config.php
+ _CONFIGDIR/$policy-conf.php
+ include/base/mysql.php
+ include/base/var.php
+ include/base/base.php
+ lang/$lang|_DEFAULT_LANG/base/base.php
+ _CONFIGDIR."/skin-$skin|_DEFAULT_SKIN/config.php
+ include/base/cache.php
+ include/base/str.php
+ include/base/log.php
+ include/alert/base.php
+ include/alert/'.$lang.'/base.php
+ include/alert/'.$lang.'/'.$AUTH[$policy]['backend'].'.php
+ include/alert/'.$lang.'/module-'.$page.'.php (*** VALID_MODULES)
+ include/base/rights.php
+ include/share/session/base.php
+ include/backend/'.$AUTH[$toPolicy]['backend'].'/session/base.php
+ include/backend/__backend__/base/attrs.php
+ include/backend/'.$AUTH[_POLICY]['backend'].'/session/base.php
+ include/share/ssl/ssl.php - RPC
+ _CONFIGDIR . "/module-$page/config.php (*** VALID_MODULES)
+ include/widgets/*.php
+ include/modules/$_module/base/*.php
+ include
+ skin
+ pre
+ include/base/login.php
+ include/share/auth/base.php
+ include/modules/auth/base/login.php
+ include/share/auth/base.php
+ include/backend/'.$AUTH[$toPolicy]['backend'].'/auth/login.php
+ include/share/session/close.php
+ include/share/facebook/autoload.php
+ include/menu/base.php
+ include/menu/'._POLICY.'/'.$lang.'/base.php
+ include/menu/'._POLICY.'/'.$lang/module-*.php (*** VALID_MODULES)
+ ../config/menu/'._POLICY.'/menu-'.$lang.'.php
+ skin/default/base/html/base.phtml
+ skin/$skin/base/html/alert.phtml
+ skin/$skin/base/html/base.phtml -- page()
+ lang/$lang/module-$page/base.php
+ lang/$lang/module-$page/$psf.php
+ skin/$skin/module-$page/html/base.phtml
+ skin/$skin/module-$page/html/$psf.phtml
+ policy/$policy/$page/$psf.php
+
+
+... RÉGEBBEN ...
+
+ index.php
+ include/config/main-config.php
+ include/config/module-*.php
+ include/base/log.php
+ include/base/base.php
+ include/config/$policy-conf.php
+ lang/$lang/base/base.php
+ skin/$skin/config.php
+ include/base/str.php
+ include/base/mysql.sql
+ include/alert/base.php
+ include/alert/lang/base.php
+ include/alert/$lang/$backend.php
+ include/alert/$lang/module-$page.php
+ include/base/rights.php
+ include/share/session/base.php
+ include/backend/session/base.php (ez csatolhat egyebet is pl: ldap/attrs.php)
+ include/modules/$page/base/*.php
+ include/modules/$page/$psf.php
+ config/skin-$skin/$page-config.php
+ private/$page/$psf-pre.php
+ include/menu/base.php
+ include/menu/$policy/$lang/base.php
+ include/menu/$policy/$lang/module-*.php
+ skin/$skin/base/alert.phtml
+ skin/$skin/base/base.phtml
+ page() függvény
+ lang/$lang/module-$page/base.php static/lang/$page/$psf.html
+ lang/$lang/module-$page/$psf.php
+ skin/$skin/module-$page/base.phtml
+ skin/$skin/module-$page/$psf.php
+ policy/$policy/$psf.php
+
+===== A backend függő részekről =====
+
+A keretrendszer három fő moduljában a [[backend]] függő részek felépítéséről a következőket kell tudni:
+
+=== auth ===
+ A toPolicy-től függő file-t csatoljuk => egyszerre több policyben azonosítani nem lehet.
+ A backend függő függvények az include/backend/$backend/auth alatt vannak
+
+=== password ===
+ A toPolicy-től függő file-t csatoljuk => egyszerre több policyben jelszóváltoztatás nem lehet.
+ backend függő függvények a include/backend/$backend/password alatt vannak.
+
+=== session ===
+ A backend függő függvényeknek előtagja a backend neve (pl. ldapMemberOf). Így egy program részen belül
+ több backend függvényei is használhatóak (általában erre nincs ugyan szükség, de pl. a login-ban igen,
+ vagy egy szülő keres a felhasználók között...).
+
+ A "fedő"-függvények ezeket a backend függő függvényeket hívják - a $toPolicy-től függően.
+ A backend-hez tartozó file-t a függvény csatolja require_once()-al.
+
+ A backend függő részek az include/backend/$backend/session alatt vannak.
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/policy.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy.txt
new file mode 100644
index 00000000..558bb08e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy.txt
@@ -0,0 +1,6 @@
+====== Hozzáférési szint (policy) ======
+
+A mayor rendszer által kialakított web-felület többféle felhasználói csoport számára biztosít hozzáférést. Ezek a hozzáférési szintek a felhsználói ||azonosítás]] és jogosultsági rendszer szempontjából nagyon eltérőek lehetnek. Alap helyzetben a rendszer három hozzáférési szintet különböztet meg:
+ * [[base:policy:private]] - A tanárok és diákok szigorú azonosítási rendszeren keresztül férnek a nekik nyújtott szolgáltatásokhoz. Ezen a hozzáférési szinten fontos, védett adatokhoz juthatnak (pl. elektronikus napló, saját levelezés, oktatási anyagok), sok esetben maguk is módosíthatnak adatokat. A hozzáférési szinten belül kategoriák és csoportok alapján tovább finomítható a jogosultsági rendszer.
+ * [[base:policy:parent]] - A szülői hozzáférési szint elsősorban az elektronikus napló adataiba való betekintésre ad lehetőséget. Az elérhető adatok itt is védettek tehát, így az azonosítás követelmény. Az azonosítók önkéntes regisztráció után jönnek létre, majd az egyes diákok adataihoz való hozzáférést igényelni kell az iskolától valamilyen formában.
+ * [[base:policy:public]] - Egy iskola honlapján sok nyilvános információt is el kell tudni helyezni. Erre szolgál a public hozzáférési szint. Ebben a policyben is van lehetőség opcionálisan felhasználói azonosításra, hogy bizonyos szolgáltatásokat előzetes regisztrációhoz köthessünk (pl. fórum hozzászólás).
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/parent.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/parent.txt
new file mode 100644
index 00000000..438bee18
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/parent.txt
@@ -0,0 +1,3 @@
+====== parent hozzáférési szint ======
+
+A szülők számára fenttertott hozzáférési szint, gyengébb azonosítással és jogosultsági rendszerrel védve. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/private.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/private.txt
new file mode 100644
index 00000000..ef3aa137
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/private.txt
@@ -0,0 +1,3 @@
+====== private hozzáférési szint ======
+
+Szigorú azonosítással védett hozzáférési szint, ami elsősorban a diákok, tanárok és más alkalmazottak számára van fenttartva. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/public.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/public.txt
new file mode 100644
index 00000000..7b5f9347
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/policy/public.txt
@@ -0,0 +1,3 @@
+====== public hozzáférési szint ======
+
+Nyilvános adatok közlésére szolgáló hozzáférési szint, opcionális azonosítási lehetőséggel. Bizonyos modulok megkövetelhetik az előzetes regisztrációt (pl. [[mayor-forum]]). \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/base/regisztracio.txt b/mayor-orig/mayor-wiki/wiki/data/pages/base/regisztracio.txt
new file mode 100644
index 00000000..1203c04e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/base/regisztracio.txt
@@ -0,0 +1,41 @@
+====== Regisztráció ======
+
+===== Miért? =====
+
+A regisztrációnak alapvetően három szerepe van:
+
+A regisztráció...
+ - a fejlesztők fele fontos visszajelzés (a programot használó intézmények száma és kiléte más érdeklődők számára is fontos adat lehet...)
+ - lehetőség arra, hogy önkéntes alapon támogatást nyújthasson minden felhasználó a projekt számára.
+ - megalapozza azt a lehetőséget, hogy a különböző MaYoR telepítések egymással kommunikálhassanak.
+
+Ez utóbbiról annyit kell tudni, hogy a kommunikációhoz két kulcsos SSL hitelesítést használunk, s a publikus kulcsok elérhetőségét a regisztrációt követően a www.mayor.hu (a controller node) hivatott biztosítani - enélkül tehát a kommunikáció nem képes működni.
+
+===== Hogyan? =====
+
+ * Frissítsd a rendszered!
+ * Adminként (useradmin) belépve a ''Felhasználók/Szerver regisztráció'' menüpontban kell a regisztrációt rendbe tenni.
+Erre alapvetően azért van szükség, mert a kommunikációhoz két kulcsos SSL hitelesítést használunk, s a publikus kulcsok
+elérhetőségét a regisztrációt követően a www.mayor.hu (a controller node) biztosítja majd.
+
+A frissítés után a program mindenképp azt fogja kiírni halványpiros háttérrel, hogy
+ "A mayor.hu nem ismeri ezt a szervert (nodeId: 00000000)!"
+
+ * Ha az intézmény korábban regisztrált, akkor elvileg van eltárolt publikus kulcsa nálunk. Ekkor a felirat alatti "Csomópont azonosító lekérdezése" gombra kattintva megkísérelhetjük az azonosító lekérdezését. Ha sikerül, akkor zöldre vált az oldal és a felirat is arról tájékoztat, hogy a mayor.hu ismeri a rendszert.
+ * Ha a fenti próbálkozás nem vezet eredményre, vagy korábban még egyáltalán nem volt regisztrálva a program, akkor az alsó űrlapot kell kitölteni. A fehér mezők kitöltése kötelező.
+
+Az ''OMKod'' megadása nem kötelező ugyan, de ha az adott rendszer egyértelműen valamelyik intézményhez tartozik, akkor célszerű megadni, ugyanis ebből generáljuk a nodeId-t (egy kétjegyű sorszámot elé téve).
+
+A ''Közterület jelleg'' mező kényes - (jobb lenne itt egy legördülő menü - majd egyszer...): nem fogad el rövidítéseket, csak rendesen kiírt szövegeket mint "út", "utca", "tér", "körtér", "lejtő", ... Azok az értékek elfogadottak, amik a napló megfelelő helyein elérhetők - pl. a diák adatok lakcím részénél, vagy az intézmény adatainál...
+
+Az ''url'' csak azért nem kötelező, mert a fejlesztői rendszereken, amik dinamikus ip-vel működnek, nem lenne értelme, de amúgy fontos adat, a napló elérhetőségét kell hogy tartalmazza.
+
+A kitöltés után a ''Regisztráció'' gombot kell megnyomni, s sikeres esetben az újratöltés után már a zöld színű oldal fogad minket.
+
+A regisztrációs adatok (a publikus kulcs és a ''nodeId'' kivételével) ugyanitt később módosíthatók.
+
+ * A ''Felhasználók/Szerver regisztráció/Ismert végpontok'' menüpont alatt ezek után fel lehet venni azokat a végpontokat, akikkel a jövőben kommunikálni szeretnénk. Alaphelyzetben a listában csak a MaYoR HU van benne (ezt nem is szabad törölni), nodeId alapján lehet tőle lekérdezni újabb végpontokat (a ''nodeId'' amúgy alap esetben az ''OMKod''-dal egyezik meg, ha csak egy rendszert regisztrálunk egy OMKod alá). A "Lekérdezés" gombra kattintás után a listában megjelenik jó esetben az új intézmény.
+
+Ide lehet majd felvenni például a fenntartói szervert, hogy az bizonyos adatokat lekérdezhessen tőlünk.
+
+A listában szereplő végpontokkal már működik a kommunikáció. Ezt tesztelendő rá lehet kattintani a "ping" gombra, ami kis idő elteltével zöldre vált és kiírja az adott rendszer pillanatnyi verzió (revision) számát. (Olyan intézményt ne pingeljetek, amelyiken még nem volt frissítés...).
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/gyik/jogi_hatter.txt b/mayor-orig/mayor-wiki/wiki/data/pages/gyik/jogi_hatter.txt
new file mode 100644
index 00000000..dfbf8e0e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/gyik/jogi_hatter.txt
@@ -0,0 +1,157 @@
+====== Az elektronikus napló használatának törvényi háttere ======
+
+Az intézmények rendszeres ellenőrzései kapcsán visszatérő kérdés: engedélyezte-e valaki a szoftver használatát.
+
+Az alábbiakban megpróbáltuk összeszedni a témával kapcsolatos hozzánk eddig eljutott információkat.
+
+==== Informális állásfoglalás 2003 ====
+
+2003 júniusában - mikor az elektronikus adattárolás lehetősége a törvény szövegében megjelent - az Oktatási Minisztériumhoz fordultunk:
+készíthetünk-e ezek szerint saját elektronikus naplót. A Minisztérium álláspontja az volt, hogy ehhez nincs szükség az ő hozzájárulásukra.
+Épp ezért erről hivatalos, felmutatható állásfogalalás nem készült, az egyeztetés telefonon, illetve email-en zajlott.
+
+==== OM honlapon közzétett állásfoglalás - 2005 ====
+
+(Gy.I.K. - Iskolai adminisztrációs- és ügyviteli szoftverek 3/2005. (III.1.) OM rendelet - 2005. július 6.)
+
+Az Minisztérium honlapján sokáig elérhető volt egy írásos állásfoglalás is a témában.
+
+Az eredeti hivatkozás azóta sajnos már nem él:
+[[http://www.okm.gov.hu/main.php?folderID=949&articleID=5825&ctag=articlelist&iid=1]]
+
+de megtalálható az archívumban:
+[[http://www.okm.gov.hu/kozoktatas/archivum/gy-iskolai]]
+
+11. pont
+
+"A nevelési-oktatási intézmények működéséről szóló 11/1994.(VI. 8.)
+MKM rendelet az iskolák számára kötelezően használatos nyomtatványként
+nevezi meg, írja elő az osztálynapló (csoportnapló) használatát. A
+jogszabály a nyomtatvány kivitelével, formájával, tartalmával
+kapcsolatos előírást nem tartalmaz, nincs tehát közoktatási
+jogszabályi akadálya annak, hogy elektronikus osztálynapló,
+csoportnapló bevezetésére kerüljön sor. Az elektronikus
+napló-nyomtatvány az OM hozzájárulása nélkül is előállítható és
+forgalmazható.
+A naplók használata során érvényesíteni kell a személyes adatok
+védelméről szóló jogszabályi előírásokat is. Az osztálynapló pénzügyi
+dokumentum is, ezért a szoftverfejlesztés során figyelemmel kell lenni
+az intézményfenntartók vele szemben megfogalmazódó igényeire is."
+
+A fenti cikkre hivatkozik a Tanulmányinfo portál is:
+[[http://shop.tanulmanyi.info/index.php?option=com_content&view=article&id=69:111994vi-8-mkm-rendelet-elektronikus-naplo-hasznalatarol&catid=1:friss-hirek&Itemid=50]]
+
+==== ADAFOR-on közzétett vélemény ====
+
+Nagy port kavart fel a témában megjelent, az ADAFOR-on közzé tett __vélemény__:
+
+[[http://adafor.oh.gov.hu/doku/kozepfoku0809/taninfo.pdf]]
+
+A link sajnos már szintén nem él...
+
+Ebben megkérdőjelezték az eletronikus naplók üzemeltetésének jogszerűségét. De hangsúlyozzuk: ez csak egy __vélemény__ volt, bár
+az ADAFOR-on érkezett, így kicsit nagyobb súlyt kapott.
+
+==== A tanulmanyi.info közlemény ====
+
+A tanulmany.info portal - mely ingyenes elektronikus napló szolgáltatást nyújt több száz intézmény számára - az ADAFOR-on megjelent
+véleményre reagált, többek között így:
+
+"...
+Az Oktatási Hivatal állásfoglalása alapján bárki használhat elektronikus naplót, mert a törvény szerint naplót vezetni kötelező, de a jogszabály
+nem szabályozza azok adattartalmát és szerkezetét - így mind a kézírásos, mind az elektronikus adattartalmú naplók elkészíthetőek helyileg.
+Az elektronikus naplóba gondosan bevitt tartalmakat továbbra is ki kell nyomtatni, és őrizni kell őket legalább öt éven át (papíron, mappákban,
+a tanárok kézjegyével ellátva).
+..."
+
+[[http://www.diakkapu.hu/component/content/article/577-uj-elektronikus-ellenorzo?start=1]]
+
+==== Minisztáriumi állásfoglalás a tanulmany.info kérésére ====
+
+A tanulmany.info minisztériumi állásfoglalást kért:
+
+"Megkeresésünket követően az Oktatási és Kulturális Minisztérium Közoktatás-igazgatási osztály részünkre megküldött levelében tájékoztatta a tanulmanyi.info
+üzemeltetőjét arról, hogy a tanulmanyi.info szolgáltatást, mint elektronikus napló megoldást engedélyeztetni nem szükséges, annak felhasználásáról az
+intézményvezető vagy fenntartó szabadon dönthet. Dr. Szüdi János Közoktatási Szakállamtitkár levelében kitért többek között arra is, hogy a naplóvezetés
+mind papír mind elektronikus úton megtörténhet, viszont mindkettőt esetében papír alapon kell irattároznia a naplókat (napló lapokat) az intézménynek.
+A papír alapú irattározás tekintetében a személyiségi, adatvédelmi és biztonságvédelmi követelmények megtartásáért az intézményvezető felel, valamint a
+hitelesítésről az intézményvezetőnek kell gondoskodnia.
+
+Az oktatási intézmények a fentiekkel kapcsolatos kérdéseik tekintetében fordulhatnak az Oktatási és Kulturális Minisztérium, Közoktatás-igazgatási osztályához."
+
+[[http://shop.tanulmanyi.info/index.php?option=com_content&view=article&id=79:szakmai-velemeny-az-okm-reszerl&catid=1:friss-hirek&Itemid=50]]
+
+==== Egy szál a sulinetes TechNet listáról ====
+
+A levél a TechNet listán is vitát kavart:
+
+[[http://lista.sulinet.hu/pipermail/techinfo/2009-January/042003.html]]
+
+==== Elektronikus naplókat évek óta használnak szerte az országban ====
+
+ - [[http://www.dinaplo.hu/referenciak.html]]
+ - [[http://www.elektronikusnaplo.hu/]]
+ - [[http://www.mayor.hu/index.php?f=ref]]
+ - ...
+
+==== A MaYoR rendszert használó intézmények többször átestek már különféle ellenőrzéseken ====
+
+A Városmajori Gimnáziumban 2003 óta használunk elektronikus naplót. Azóta több törvényességi vizsgálat is folyt az intézményben, melyek egyike sem
+emelt kifogást az elektronikus napló használata ellen. Hozzánk hasonlóan a programot használó többi intézményben is volt már (tán nem mindenhol)
+ilyen-olyan ellenőrzés, vizsgálat - melyek legfeljebb formai hiányosságokra hívták fel a figyelmet - melyeket igyekeztünk és a jövőben is igekszünk
+minél hamarabb javítani, rendben tartani.
+
+===== A nyomtatványokra vonatkozó szabályozások ======
+
+A közoktatási törvény (Kt.) 72. § (2) bekezdése az alábbi módon szabályozza a közoktatási
+intézményi nyomtatványok, illetve az azokat részben kiváltó informatikai rendszerek alkalmazási
+szabályait:
+
+72. § . (2) Az iskolában csak olyan bizonyítványnyomtatvány, illetve bizonyítvány kiállításához
+szükséges nyomtatvány alkalmazható, amelyet az oktatásért felelős miniszter, szakképesítést tanúsító bizonyítvány
+esetén a szakképzésért és felnőttképzésért felelős miniszter jóváhagyott. A bizonyítványnyomtatvány és a bizonyítvány
+kiállításának alapjául szolgáló nyomtatvány előállításához, forgalmazásához az oktatásért felelős miniszter, szakképesítést
+tanúsító bizonyítvány esetén a szakképzésért és felnőttképzésért felelős miniszter engedélye szükséges. Az iskolai
+nyomtatványok - az év végi bizonyítvány és az állami vizsga teljesítéséről kiállított bizonyítvány kivételével -
+az oktatásért felelős miniszter, szakképesítést tanúsító bizonyítvány esetén a szakképzésért és felnőttképzésért
+felelős miniszter által jóváhagyott rendszer alkalmazásával, a személyiségi, adatvédelmi és biztonságvédelmi követelmények
+megtartásával elektronikus úton is elkészíthetők és tárolhatók. A bizonyítvány kiállításának alapjául szolgáló nyomtatványt
+azonban nyomtatott formában is elő kell állítani, és meg kell őrizni.
+
+====== 2011. évi CXC. törvény A nemzeti köznevelésrõl ======
+
+Az időközben megjelent új "Köznevelési törvény" szinte változtatás nélkül tartalmazza a korábbi szöveget:
+
+57. § (6) Az iskolai nyomtatványok – az év végi bizonyítvány és az állami vizsga teljesítésérõl kiállított bizonyítvány kivételével –
+az oktatásért felelõs miniszter, szakképesítést tanúsító bizonyítvány esetén a szakképzésért és felnõttképzésért felelõs
+miniszter által jóváhagyott rendszer alkalmazásával, a személyiségi, adatvédelmi és biztonságvédelmi követelmények
+megtartásával elektronikus úton is elkészíthetõk és tárolhatók. A bizonyítvány kiállításának alapjául szolgáló
+nyomtatványt ebben az esetben is elõ kell állítani nyomtatott formában, és meg kell õrizni.
+
+====== 11/1994 MKM rendelet ======
+
+=== A foglalkozási napló ===
+
+5. Az óvodai, a tanórai, a tanórán kívüli, valamint a kollégiumi foglalkozásokról a nevelő munkát végző, illetve a foglalkozást
+tartó pedagógus foglalkozási naplót (csoportnaplót, osztálynaplót, sportnaplót stb.) vezet. A foglalkozási naplót az óvodai nevelés,
+iskolai nevelés és oktatás nyelvén kell vezetni.
+
+=== A tanügyi nyilvántartások vezetése ===
+
+10. a) A pedagógus csak a nevelő-oktató munkával összefüggő feladatokhoz nélkülözhetetlen ügyviteli tevékenységet köteles elvégezni.
+
+b) Az osztályfőnök vezeti az osztálynaplót, a törzslapot, és kiállítja a bizonyítványt, vezeti a továbbtanulással összefüggő nyilvántartást.
+Alapfokú művészetoktatási intézményben a hangszert, illetve a csoportos tantárgyat oktató szaktanár - az intézményvezető megbízása alapján -
+vezeti az egyéni foglalkozási naplót, a csoportos foglalkozási naplót, a törzslapot és kiállítja a bizonyítványt.
+
+=== Irattári terv ===
+
+16. Naplók 5 (év)
+
+=== Az iskola által kötelezően használt nyomtatványok ===
+
+22. Osztálynapló (csoportnapló)
+
+(Nincs "megcsillagozva", ami azt jelentené:
+
+A * jelölt nyomtatványok csak az oktatásért felelős miniszter által vezetett minisztérium engedélyével gyárthatók és forgalmazhatók,) \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/gyik/mayorca.txt b/mayor-orig/mayor-wiki/wiki/data/pages/gyik/mayorca.txt
new file mode 100644
index 00000000..285c09a6
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/gyik/mayorca.txt
@@ -0,0 +1,77 @@
+====== MaYoR Hungary - Tanúsítvány hitelesítő ======
+
+Saját gyakorlatunkból jól ismerjük a self-signed tanúsítványokkal járó kellemetlenségeket. A böngészőket rá kell beszélni az általuk borzasztóan veszélyesnek ítélt oldalhoz való csatlakozásra, ráadásul ezt a lépéssort a felhasználóink számára is - ha nem is érthetővé - legalább elfogadhatóvá kell tennünk, miközben a böngészők - amúgy teljesen jogosan - egyre drasztikusabb figyelmeztetéseket küldenek feléjük.
+
+
+===== Megoldási lehetőségek =====
+
+Az igazán jó megoldás nyilván egy tisztességes tanúsítvány beszerzése lenne, hazánkban talán a [[http://www.netlock.net/|NetLock]] által hitelesített tanúsítványok beszerzése a legegyszerűbb, de nem jellemző, hogy a magyar középiskolák tömegével szereznének be ilyet, ha találhatnak más - bár kétség kívül kevésbé biztonságos - megoldást is.
+
+Köztes megoldás lehet, ha csatlakozunk a [[http://www.cacert.org/|CAcert.org]]-hoz - de mi nem ismerjük részleteiben ezt a kezdeményezést, nem vettük a fáradságot, hogy megismerjük, így ajánlani nem tudjuk - ha valaki tud róla bővebbet, írjon róla nekünk - lehet, hogy jó megoldás.
+
+A mi alternatívánk egy általunk (MaYoR Hungary) hitelesített tanúsítvány kiadása.
+
+===== MaYoR Hungary CA =====
+
+<del>Igény esetén az elküldött adatok alapján készítünk MaYoR Hungary által aláírt tanúsítványt.</del>
+
+[color=red]** >> Ezt a szolgáltatást megszüntettük. << **[/color]
+
+[color=#bbbbbb]
+==== Mi előnye van? ====
+Ez a megoldás nem sokban tér el a ''self-signed'' tanúsítvány alkalmazásától. Kicsivel talán növeli a hitelességet, hogy nem az adott szerveren generált kulcsot használunk - a szerver egy tőlünk kapott tanúsítványt mutat fel, ami annyit jelent, hogy legalábbis fel kellett vegye velünk a kapcsolatot a szerver telepítője, ennek vannak nyomai, legalább egy email cím, vagy telefonszám. A hitelesítést ennél mélyebben nem tudjuk biztosítani (nem megyünk el "családlátogatásra", nem kérünk hivatalos iratokat a bejegyzéshez, mint a komoly tanúsítvány hitelesítő cégek).
+
+A másik, hogy elegendő a MaYoR Hungary "szervezetet" elfogadtatni a böngészővel, mint megbízható hitelesítő szerv - ez kevésbé ijesztő folyamat és [[http://www.mayor.hu/installca.php|néhány kattintást igényel csak]], viszont nyilvánvalóan bizalmi kérdés. Akik elfogadnak minket megbízható hitelesítőként, azoknak a továbbiakban semmilyen gondot nem fog okozni a MaYoR rendszerhez való csatlakozás, sem most, sem a jövőben kiállított újabb tanúsítványok esetén. Aki túl kockázatosnak tartja ezt a bizalmi lépést, az továbbra is úgy járhat el, mint ahogy azt a ''self-signed'' tanúsítványokkal tette.
+
+==== Milyen adatokra van szükség a tanúsítvány kiállításához? ====
+
+A következő adatokat kell eljuttatni hozzánk (mondjuk a support(a)mayor.hu címre) tanúsítvány igényléséhez:
+
+ * Megye, régió
+ * Város
+ * Intézmény név
+ * Szervezeti egység
+ * Web szerver neve
+ * Email cím
+
+Az elküldött adatok alapján három állományt generálunk: jelszóval védett kulcsot, jelszó
+nélküli kulcsot és tanúsítványt. Ha az intézmény rövid neve pl ''rovidnev'', akkor:
+
+ rovidnev.key.pem
+ rovidnev.key.pem.unsecure
+ mayor.rovidnev.sulinet.hu.cert.pem
+
+A két kulcs közül csak az egyiket kell használni. A különbség, hogy a
+jelszóval védett kulcs használata esetén a web-szerver indításakor
+mindig be kell írni a jelszót. Ez kényelmetlen, de a kulcs így nagyobb
+biztonságban van. Ha ezzel nem akarunk minden indításkor foglalkozni,
+akkor használjuk bátran a *.unsecure kulcsot (eddig is ilyet használt
+mindegyikünk).
+
+A három állományt valamilyen egyeztetett úton-módon eljuttatjuk a szerverre (nem email-ben,
+inkább scp-vel).
+
+
+==== A tanúsítvány telepítése ====
+
+A három állományt másoljuk be a /etc/apache2/ssl köyvtárba (ha nincs ilyen könyvtár, akkor hozzuk létre)!
+
+Szerkesszük a /etc/apache2/sites-enabled/mayor állományt:
+
+ SSLCertificateFile /etc/apache2/ssl/mayor.rovidnev.sulinet.hu.cert.pem
+ SSLCertificateKeyFile /etc/apache2/ssl/rovidnev.key.pem.unsecure
+
+A régi bejegyzéseket # jellel kommentezzük ki, vagy a korábbi állományt mentsük el - hátha valami miatt vissza akarunk térni a korábbi változatra...
+
+Indítsuk újra a web-szervert
+
+ /etc/init.d/apache2 restart
+
+==== A böngésző beállítása ====
+
+Ha fel szeretnénk venni a MaYoR Hungary "szervezetet" a megbízható tanúsítvány hitelesítők közé, akkor a böngészőnkkel látogassunk el a [[http://www.mayor.hu/installca.php]] oldalra és nyomjuk meg az Install gombot. Elegendő a web-helyek hitelesítését engedélyezni a megjelnő ablakban.
+
+Ha ezt a lépést nem kívánjuk megtenni, akkor a webszerverhez való következő csatlakozáskor fogadhatjuk el ideiglenesen, vagy hosszútávra az új tanúsítványt - ahogy azt az ön-aláírt tanúsítványokkal tettük.
+
+Ezzel el is készültünk.
+[/color] \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/gyik/naplo.txt b/mayor-orig/mayor-wiki/wiki/data/pages/gyik/naplo.txt
new file mode 100644
index 00000000..db516de1
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/gyik/naplo.txt
@@ -0,0 +1,408 @@
+
+====== Gyakran Ismételt Kérdések - MaYoR Napló ======
+
+===== Minden határidő lejárt, segítség! =====
+
+**Kérdés:**
+Mit tegyek, ha már adminisztrátrként sem tudok jegyet módosítani, igazolást beírni, órát beírni, stb...? Nyúljak bele a naplóba adatbázis szinten?
+
+**Válasz:**
+Ne. Inkább ideiglenesen, egy munkamenet erejéig módosítsd a határidőt. Egy lehetséges mód a következő:
+
+Az intézmény konfigurációs állományában
+(''config/module-naplo/config-[azintezmenyrovidneve].php'') van
+egy ilyen sor (az elején):
+
+<code php>
+define('_ZARAS_HATARIDO',date('Y-m-01 00:00:00',strtotime('-1month -10days')));
+</code>
+
+Ezt ki lehet egészíteni valahogy így:
+
+<code php>
+ if (_SESSIONID=='ad3dabd520fecfcd306a7fd39')
+ define('_ZARAS_HATARIDO','2008-09-01 00:00:00');
+ else
+ define('_ZARAS_HATARIDO',date('Y-m-01 00:00:00',strtotime('-1month -10days')));
+</code>
+
+Ha a _SESSIONID
+értékéhez bemásolod az épp aktuális session azonosítódat az url-ből,
+akkor amíg ki nem lépsz, addig a _ZARAS_HATARIDO 2008. szeptember 1. lesz
+számodra - és tudsz pótlólag igazolni, órát beírni.
+
+===== Hogy tudok az előző hónapra jegyet beírni? =====
+
+**Kérdés:**
+Hogy tudok az előző hónapra jegyet beírni? Hiszen még nem járt le a határidő...
+
+**Válasz:**
+Sehogy. A jegy mindig a beírás dátumával kerül rögzítésre - hiszen a beírással válik hivatalossá, addig csak "mese". Ha utalni akarsz arra, hogy a jegy
+mikor, milyen körülmények között keletkezett, akkor több lehetőséged is van erre:
+
+ * Hozzárendelheted a jegyet egy órához
+ * Szöveges megjegyzést fűzhetsz a jegyhez
+ * Csoportos jegy esetén a dolgozat elnevezése is utalhat a körülményekre
+
+A határidő csak arra vonatkozik, hogy a már beírt jegyeket meddig lehet változtatni, törölni.
+
+===== Egy diák egy tárgyat több tankörben is tanul, hogy kap majd évvégi jegyet? =====
+
+**Kérdés:**
+Vannak olyan tanulók, akik egy tárgyat két különböző órán is tanulnak, de végül egy jegyet kapnak majd a kettőre félévkor/évvégén. Hogy oldjam ezt meg?
+
+**Válasz:**
+A zárójegyek nem tankörökhöz, hanem tárgyakhoz kapcsolódnak. Ha két tankör ugyanahhoz a tárgyhoz tartozik, akkor a közös diákok adott tárgyi zárójegyi mindkét
+tankörnél módosíthatók - a tankörök tanárainak meg kell egyezni bennük. Az év közben kapott jegyek is megjelennek mindkét tankörnél, de megkülönböztethetőek,
+tehát megállapítható, hogy melyik jegy melyik tankörben született.
+
+===== Nálunk nincs 2F zárójegy, hogyan tűntethetem el? =====
+
+**Kérdés:**
+A mi intézményünk nem ad elégséges F (figyelmeztető) bejegyzést se félévkor se évvégén. Hogyan lehet eltűntetni ezt a fokozatot?
+
+**Válasz:**
+A napló modul intézményi konfigurációs filejában (''config/module-naplo/config-[intezmeny_rovid_neve].php'') a $KOVETELMENY tömb
+'jegy' típusának* bejegyzéseit kell felüldefiniálni:
+<code php>
+ // Osztályzatok testreszabása - például: 5 fokú skála, F nélkül, de Dicsérettel:
+ global $KOVETELMENY;
+ $KOVETELMENY['jegy']= array(
+ 'értékek' => array('1.0','2.0','3.0','4.0','5.0'),
+ '1.0' => array('rovid' => '1', 'hivatalos' => 'ELEGTELEN'),
+ '2.0' => array('rovid' => '2', 'hivatalos' => 'ELEGSEGES'),
+ '3.0' => array('rovid' => '3', 'hivatalos' => 'KOZEPES'),
+ '4.0' => array('rovid' => '4', 'hivatalos' => 'JO',),
+ '5.0' => array('rovid' => '5', 'hivatalos' => 'JELES', 'megjegyzes'=>'dicséret'),
+ );
+</code>
+
+*Amennyiben jegy típusra van állítva a tárgy zárójegy követelménye.
+
+===== Hogyan használhatok egyéni értékelést? =====
+
+**Kérdés:**
+Mi egyedi értékelést használunk évközben jegyek helyett. Lehetséges ez?
+
+**Válasz:**
+A napló modul intézményi konfigurációs file-jában (''config/module-naplo/config-[intezmeny_rovid_neve].php'') a $KOVETELMENY tömb
+'egyedi felsorolás' típusának bejegyzéseit kell (felül)definiálni:
+<code php>
+ global $KOVETELMENY;
+ $KOVETELMENY['egyedi felsorolás']= array(
+ 'értékek' => array('1.0','2.0','3.0'),
+ '1.0' => array('rovid' => 'szorgalmas', 'hivatalos' => 'SZORGALMAS'),
+ '2.0' => array('rovid' => 'ügyes', 'hivatalos' => 'UGYES', 'megjegyzes' => 'dicseret'),
+ '3.0' => array('rovid' => 'aranyos', 'hivatalos' => 'ARANYOS'),
+ );
+
+</code>
+
+Megjegyzés: a hivatalos értékeléshez a megfelelő nyelvi konstansokat is létre kell hozni. [--HOGYAN]
+
+===== Késések összeadása =====
+
+**Kérdés:**
+A késések idejét annak rendje és módja szerint adminisztráljuk. Hogyan állítható be, hogy ezek az összesítő táblázatokban
+az összeadott értéknek megfelelően igazolatlan órára váltassanak át?
+
+**Válasz:**
+A napló modul intézményi konfigurációs filejában (''config/module-naplo/config-[intezmeny_rovid_neve].php'')
+erre a következő beállítás lehetőségek vannak:
+
+<code php>
+# Összeadjuk-e a késések perceit, hogy átváltsuk
+ define('_KESESI_IDOK_OSSZEADODNAK', false);
+# Hány késés felel meg egy igazolatlan órának - ha 0 vagy _KERESESI_IDOK_OSSZEADODNAK, akkor nem váltjuk át
+ define('_HANY_KESES_IGAZOLATLAN', 3);
+# Hány felszerelés hiány felel meg egy igazolatlan órának - ha 0 vagy _KERESESI_IDOK_OSSZEADODNAK, akkor nem váltjuk át
+ define('_HANY_FSZ_IGAZOLATLAN', 3);
+</code>
+
+
+===== Órarend betöltés szövegfile-ból =====
+
+**Kérdés:**
+Hogyan tudom betölteni egy szövegfile-ból az órarendet?
+
+**Válasz:**
+Először a tanárok és termek adatait kell betöltenünk, illetve át kell gondolnunk hány hetes az órarend és ennek megfelelően inicializálhatjuk a tanévet. A termeket közvetlenül tudjuk csak betölteni (admin/import -- terem). Ezek után hetenként lehet betölteni órarendet.
+
+ 1. a beépített órarendibetöltő sémákat használva ([[naplo:tanev:orarendbetolto|Órarend/Órarend betöltés]])
+ 2. közvetlenül az orarendiOra táblába importálva (admin/import)
+
+==== közvetlen órarendbetöltés az orarendiOra táblába ====
+
+Ha kézzel kell "digitalizálni" az órarendet, akkor az a legjobb, ha az
+''orarendiOra'' táblának megfelelő tabulátorokkal tagolt szöveges
+állományt készítesz. Mezői (ezt a /var/mayor/install/module-naplo/mysql/tanev.sql-ben
+is megtalálod):
+
+ het, nap, ora, tanarId, osztalyJel, targyJel, teremId, tolDt, igDt
+
+Az első három gondolom egyértelmű. A ''tanarId'' a tanár naplóbeli
+azonosítója (a tanárok kiválasztására használt legördülő listákban is
+megjelenítjük), az ''osztályJel'', ''targyJel'' szöveges mezők, amik utalnak
+arra hogy melyik osztály, mely tárgyáról van szó, de alapvetősen csak
+az egyedi azonosíthatóság fontos (''tanarId'', ''osztalyJel'', ''targyJel'' mindig
+meghatároz egy tankört), ''teremId'' megint csak a naplóbeli terem
+azonosító (ez is külső kulcs), ''tolDt'', ''igDt'' meg a bejegyzés
+érvényességi ideje (pl csak az első félévben lévő óra...)
+
+Ha ezt betöltöd, akkor el kell végezned az [[naplo:orarend:orarendTankor|Órarend-Tankör
+összerendezés]]t (Órarend menüpont alatt) - ez az ''orarendiOraTankor''
+táblába vesz fel bejegyzéseket, amikkel a fent emlegetett
+(''tanarId'',''osztalyJel'',''targyJel'') --> ''tankorId'' hozzárendelés megvalósul.
+Egy tankört többféle hármas is jelölhet az órarendben (pl egy
+tanárváltáskor a tanarId legalább megváltozik), de fordítva mindig
+egyértelmű a kapcsolat.
+
+===== Nem tudok bejelentkezni. A böngésző "Tanúsítvány probléma" miatt nem enged tovább... =====
+
+**Kérdés:**
+Többször is próbáltam a bejelentkezéssel, de mindig azt kapom, hogy „tanusítvány probléma” miatt nem léphetek be. Mi történt?
+
+**Válasz:**
+A MaYoR rendszer a biztonságos böngészés érdekében [[http://http://wiki.hup.hu/index.php/SSL|SSL]] kapcsolatot épít ki a böngésző és a szerver között. E kapcsolat kiépítésekor a szerver egy tanúsítvánnyal próbálja igazolni, hogy valóban ő az a szolgáltató, akinek mondja magát. Egy ilyen tanúsítvány akkor megbízható, ha egy harmadik fél - egy hitelesítő szervezet - aláírta azt, jelezve ezzel, hogy meggyőződött annak valódiságáról.
+
+Ilyen tanúsítvány beszerzése költséges, erre szakosodott cégek végzik a hitelesítést (NetLock, VeriSign...). Egy a MaYoR-hoz hasonló, iskolai keretek közt működő szoftver számára az intézmények nem vásárolnak komoly tanúsítványokat, helyette inkább saját maguk, vagy az általunk kreált [[gyik:mayorca|MaYoR Hungary]] által aláírt tanúsítványokat használnak. Ezeket a tanúsítványokat a böngészők meglehetősen nagy előítélettel kezelik, és jelzik a felhasználó fele, hogy ismeretlen hitelesítő szerv írta őket alá.
+
+Az első esetben (ha az intézmény saját aláírású tanúsítványt használ), annyit tehetünk, hogy kivételként felvesszük a tanúsítványt az elfogadottak közé. Ez mindegyik böngésző típusnál megtehető, de számítanunk kell rá, hogy a böngésző folyamatosan le akar beszélni minket erről a lépésről.
+
+A második esetben (ha MaYoR Hungary által aláírt tanúsítványt használ az intézmény) az előzőekben tárgyalt módszer mellett megtehetjük azt is, hogy [[http://www.mayor.hu/installca.php|felvesszük a MaYoR Hungary-t a megbízható hitelesítők közé]] néhány kattintással.
+
+===== Le lehet cserélni a képeket a "Köszönjük, hogy minden órádat beírtad!" szöveg mellett? =====
+
+**Kérdés:**
+Letöltöttem pár jópofa képet! Le lehet cserélni ezekre a "Köszönjük, hogy minden órádat beírtad!" szöveg mellett megjelenőket?
+
+**Válasz:**
+Igen. A képeket (''*.gif'') be kell másolni a ''/var/mayor/www/skin/classic/module-naplo/img/anim/'' könyvtárba, és fel kell venni egy bejegyzést
+a napló konfigurációs állományába (''/var/mayor/config/module-naplo/config.php''):
+
+ // A "Köszönjük, hogy minden órádat beírtad!" felirat mellett megjelenő GIF képek
+ $UdvozloKep = array('pingvin','kutyus','vonat');
+
+A tömbbe a megjelenítendő állományok neveit kell felsorolni, a ''.gif'' kiterjesztés nélkül.
+
+Két kis gyűjtemény, szabad felhasználásra: [[http://www.szag.hu/gif.zip|Egyik]] és [[http://www.szag.hu/gif2.zip|Másik]]...
+
+===== Felvettem új tanárokat, de nem jelennek meg a felületen =====
+
+**Kérdés:**
+Felvettem új tanárokat tabulátorokkal tagolt szöveges állományból, látszólag minden rendben ment, de az új tanárok nem jelentek meg a nevek között. Mit lehet a hiba?
+
+**Válasz:**
+Az adatok valószínűleg bekerültek az adatbázisba, de a jogviszony kezdetét, illetve végét jelző ''beDt'' és ''kiDt'' attribútumok nem lettek jól beállítva,
+ezért a program úgy tekinti, hogy a felvett tanárok nincsenek jogviszonyban - ezért nem jeleníti meg őket. Egészítsük ki az adatállományt a megfelelő dátum
+adatokkal (legalább a ''beDt'' értéket állítsuk be) és töltsük be újra az adatokat!
+
+===== Hiba: Lejárt a munkamenet vagy nem engedélyezett a sütik használata. =====
+
+**Kérdés:**
+Belépésnél az adat bázisban látszik, hogy beléptem, a logolban bent van a megfelelő bejegyzés, viszont a következőket írja ki a program:
+
+ Hiba: Lejárt a munkamenet vagy nem engedélyezett a sütik használata.
+ Hiba: Azonosítatlan felhasználó! Az adott hozzáférési szinten nem hitelesítetted magad!
+ (A bejelentkezés kötelező.)
+
+Természetesen a gépen a sütik vannak engedélyezve. Mi lehet a baj?
+
+**Válasz:**
+Részlet a /var/mayor/config/main-config.php.example állományból:
+
+ // A paraméter mindenképpen legyen true, ha ssl kapcsolatod van.
+ // Ha nem ssl-en használod, akkor úgyis mindennek vége...
+ define('_SECURECOOKIE',true);
+
+Tehát a gond az lehet, hogy HTTP protokolt használsz (ne használj kódolatlan protokolt ott, ahol jelszavak vándorolnak a neten) és a fenti paraméter true értékű, vagy
+épp fordítva, HTTPS-t használsz, de a fenti beállítás false értékű.
+
+===== Haladási napló nyomtatásakor a Hiba: Hibás/rossz adat! (Első oldal tárgyak száma,7) hibaüzenetet kapom =====
+
+**Kérdés:**
+A haladási napló nyomtatásakor ''Hiba: Hibás/rossz adat! (Első oldal tárgyak száma,7)'' hibaüzenetet kapok. A nyomtatvány persze nem készül el. Mi a hiba?
+
+**Válasz:**
+A haladási naplóban az egy oldalon megjeleníthető tárgyak, illetve tankörök száma korlátozott. A legszigorúbb korlát az adott időszak (három nap) adatait
+tartalmazó első lapot érinti, ahol az egyes napok órarendje és hiányzási adatai is megjelennek. Ezeken az oldalakon 6 tankör órái jelenhetnek meg, ha ennél
+több jutna ide, akkor a program a fenti hibaüzenetet adja. Azért fordulhat elő ilyen eset, mert a program az azonos tárgyhoz tartozó tankörök óráit
+tankörönként külön oszlopban, de egy egységként kezeli. Ha például a tárgyak sorrendje magyar, matematika, történelem, angol, stb és a matematikát kettő, az
+angolt három csoportban tanulják az osztály tanulói, akkor előáll a fenti hiba, hiszen a történelem kerül a 4. oszlopba, majd az angol tankörök 3 oszlopa
+jönne, ami már nem fér ki.
+
+A probléma a tárgysorrend helyes megválasztásával oldható fel. A [[naplo:osztalyozo:targysorrend|Napló/Osztályozó/Tárgysorrend]] menüpont alatt módosítsuk a
+''napló'' nevű sorrendet.
+
+===== Nem tudok tárgysorrendet változtatni =====
+
+**Kérdés:**
+Az ''Osztályozó napló/Tárgysorrend'' menüpont alatt látszólag minden rendben, megjelennek a tárgyak, bal szélük sárga, de nem tudom a sorrendet változtatni.
+Mi a hiba?
+
+**Válasz:**
+Röviden:
+ cp /var/mayor/config/skin-classic/naplo-config.php.example /var/mayor/config/skin-classic/naplo-config.php
+
+Hosszabban: a hiányzó konfigurációs állomány miatt nem töltődik be a megelelő javascript rutin-gyűjtemény, ezért nem lesznek "vonszolhatók" a felsorolás elemei.
+
+===== A haladási napló nyomtatásakor csak üres oldalt kapok a generált pdf helyett =====
+
+**Kérdés:**
+A haladási napló nyomtatásakor az osztály kiválasztása után csak egy üres, fehér lapot kapok a böngészőben. Se hibaüzenet, se generált PDF állomány.
+Mi a hiba?
+
+**Válasz:**
+A problémát az okozza, hogy a nyomtatási kép generálása nagy memóriaigényű feladat, így minden bizonnyal túllépte a limitet a folyamat. Növeljük meg
+a felhasználható megória méretét a ''/etc/php5/apache/php.ini'' file-ban:
+
+ memory_limit = 128M ; Maximum amount of memory a script may consume (16MB)
+
+Ez után újra kell olvastatni az apache beállításait:
+
+ # /etc/init.d/apache2 reload
+
+===== Felhasználók jogosultságai =====
+
+**Kérdés:**
+Hogyan lehet a felhasználók jogosultságait módosítani?
+
+**Válasz:**
+Nem lehet. A jogosultságok áttekintéséhez, ill. szabályozásához használd a [[naplo:csoportok|Csoportok]]at!
+
+===== Felhasználónevek változtatása =====
+**Kérdés:**
+Meg tudom-e utólag változtatni a felhasználói neveket (a generáláskor túl hosszú -> asszonynevek; névváltozás (házasság, válás, vagy csak egyszerű hivatalos névváltoztatás))?
+
+**Válasz:**
+A felületen változtatni nem lehet, csak törölni és újat felvenni, de MySQL-ben lehet változtatni is. Részletek [[hogyan:felhasznalonevek_megvaltoztatasa|itt]]!
+
+===== Hogyan tudok visszamenőleg bejegyzéseket felvenni a Haladási naplóba? =====
+
+**Kérdés:**
+Hogyan tudok visszamenőleg bejegyzéseket felvenni a Haladási naplóba?
+
+**Válasz:**
+Egy-egy óra a [[naplo:haladasi:pluszora|Napló/Haladási napló/Plusz óra]] menüpontban vehető fel.
+Teljes napok feltöltésére a [[naplo:admin:fillhaladasi|Napló/Admin/Haladási napló feltöltése]] menüpont használható.
+
+Lehetőség szerint persze kerüljük az utólagos módosításokat! [[hogyan:haladasi_utolag|Bővebben...]]
+
+===== Vissza lehet-e tölteni régebbi adatbázist új teleptésű MaYoR-ra? =====
+**Kérdés:**
+Vissza lehet-e tölteni régebbi adatbázist új teleptésű MaYoR-ra?
+
+**Válasz:**
+A részletes leírás a [[hogyan:visszatoltes_mentesbol#vissza_lehet-e_toelteni_regebbi_adatbazist_ujabb_revision-szamu_mayor-ra|itt]] található.
+
+
+===== Üzenetek megjelenése =====
+**Kérdés**
+Hogyan tudom szabályozni a kezdőlapon megjelenő üzenetek számát, illetve az üzenetek lapozását?
+
+**Válasz**
+A ///var/mayor/config/module-naplo/config.php// állományban keressük meg az alábbi sorokat:
+
+ define('__UZENO_AJAXLIMIT',3);
+ define('__UZENO_DEFAULTLIMIT',20);
+
+Az első sorban a '3' a kezdőlapon megjelenő üzenetek számát jelenti.
+A második sor '20' értéke a **Minden üzenetemet mutasd!** utáni, egy oldalon olvasható üzeneteket (és így a lapozást is) befolyásolja.
+
+
+===== Nem töltődtek be a haladási naplóba a mai órák... - Mit tegyek? =====
+**Kérdés**
+A haladási naplóban nem jelnnek meg az órák. A Kollégák nem tudják beírni a tananyagot... hiányzókat... stb.
+
+**Válasz**
+A haladási naplóba (//naplo_[iskola]_[tanev]// adatbázis //ora// táblája) akkor kerülnek be az órák, ha:
+
+ * van érvényes //tolDt,igDt// értékekkel feltoltott orarendiOra tábla; és elkészült a órarend-tankör összerendezés;
+ * elérjük az adott nap dátumát, és valaki először lép a napló felületére (próbáljuk ki 0:00:01-kor... 8-), és még nincs az //ora// táblában az adott napra bejegyzés;
+ * vagy az adott napra valamilyen "esemény" (helyettesítés-kiírás, óracsere, stb.) történik.
+
+Előfordul, hogy - főleg a II. félévi órarendváltoztatásnál - hibás a tolDt érték az órarendiOra táblában. Ellenőrizzük!
+
+Szintén jellemző II. félévi hibajelenség, hogy az új órarend elkészülte és feltöltése után nem megfelelő az órarend-tankör összerendezés (változó óraszámú tárgyak, csoportcserék, stb. miatt). A **Napló-Órarend-Órarend ellenőrzés** menü pont erre szolgál: az aktuális dátum kiválasztása után itt találjuk azokat a tanköröket, amiknél nem megfelelő valamilyen okból az összerendezés. A lista alapján ellenőrizzük az **Órarend-tankör összerendezés** menüben a tanárok óráit!
+
+A(z egyéb, évközbeni) be-nem töltődésnek a leggyakoribb okai, illetve ellenőrzésük (óvatosan járjunk el, mert nem mindegy, hogy csak 1-2 óra van-e bent, vagy csak annyi hiányzik... :-). Most az előbbit taglaljuk.):
+
+Az éves munkatervben ellenőrizzük, hogy az adott nap megfelelően van-e rögzítve (tanítási nap);
+
+Ha nem, javítsuk, majd a **Helyettesítés** menüben az adott napra - tanár kiválasztása nélkül - nyomjunk egy **OK**-t. Ilyenkor be kell töltődni a haladási naplóba az óráknak.)
+
+Az egyes osztályok órarendjében ellenőrizzük, hogy az adott napra valamely óra mellett megjelent-e a jobb felső sarokban egy kis kör (ez jelzi, hogy az óra már a haladási naplóban is benn van).
+
+Ha csak néhány óránál találunk ilyet, meg is van az ok: egyetlen bejegyzés is elég, hogy a többi óra ne töltődjön be.
+
+SQL-szinten (//naplo_[iskola]_[tanev]// adatbázis):
+
+ mysql> SELECT * FROM ora WHERE dt=curdate();
+
+Ez a parancs listázza az aktuális napi haladási naplóbeli órákat. Ha nem nulla (hanem 1-2-3 rekord) az eredmény, derítsük ki, hogy melyik tanár, melyik csoportjai ezek. Járjunk utána, hogy kerültek be (plusz óra, admin-kolléga keze nyoma...). Ha biztosak vagyunk a dolgunkban, szüntessük meg ezeket az órákat!
+
+ mysql> DELETE FROM ora WHERE dt=curdate();
+
+**Figyelem!** Ez a parancs törli az aktuális napli órákat.
+
+Egy napi haladási naplót "kézzel" a **Helyettesítés** menüben az adott napra - tanár kiválasztása nélkül - az **OK** gombra történő kattintással tölthetünk be. Ilyenkor be kell kerülnie a haladási naplóba az óráknak.
+
+Amennyiben a kóbor, a hibát okozó órák valós állapotot tükröztek, kézzel, a **Plusz órá**knál, vagy a **Helyettesítés**nél újból rögzítenünk kell őket.
+
+Célszerű a műveletek előtt egy kézi //mayor backup//-pal elmenteni az aktuális állapotot...
+
+===== Az osztályozónapló és/vagy haladási napló és/vagy záradékok és/vagy törzslapok nyomtatásakor a keletkező PDF-állomány nem a teljes anyagot tartalmazza... - Mit tegyek? =====
+**Kérdés**
+Az osztályozónapló és/vagy haladási napló és/vagy záradékok és/vagy törzslapok nyomtatásakor a keletkező PDF-állomány nem a teljes anyagot tartalmazza, valahol "elakad" (Pl. 30 fős osztály osztályozónaplója a 23. diák után egyszerűen nincs... Vagy a haladási napló október 2. után egyszerűen nincs... Vagy a záradék elakad Balogh-nál...).
+
+**Válasz**
+A hiba oka a különleges karakterek jelenléte a napló idevágó részében. A PDF-generálás során a program nem tud mit kezdeni az ilyen karakterekkel, így a PDF-készítési folyamat leáll.
+
+__A megoldás lépései:__
+
+ * Nézzük meg, melyik az utolsó meglévő PDF-oldal!
+ * A **következő oldal** (példánkban a 24. diák vagy október 3. vagy a Balogh utáni diák(ok)) adatait alaposan nézzük végig! (Néha előfordul, hogy a felületen minden rendben levőnek látszik, azonban az adatbázisban hibás a karakter.)
+ * Ha nem találunk semmilyen rendellenességet, alaposan nézzük meg a ///var/mayor/download/private/nyomtatas/haladasi// vagy //osztalyozo// vagy a //...private/naplo/nyomtatas/zaradekok// vagy a //...private/naplo/nyomtatas/torzslap// könyvtárban az adott osztályhoz tartozó log és u8.tex állományokat! A log állományban konkrétan ott kell szerepelnie, hogy a TeX forrás hanyadik soránál akadt el a fordítás - ez elég sokat segíthet. Ezt a részt tanulmányozzuk át roppant figyelmesen!
+ * A hibás(nak ítélt) karakterek (felületen vagy adatbázisban történő) javítása után próbáljuk meg a napló újbóli nyomtatását! Javasoljuk, hogy mindig csak egy-egy változtatást hajtsunk végre, ha rosszul tippeltünk, azonnal állítsuk vissza az eredeti állapotot és folytassuk a kutatást!
+
+__Ami eddig előfordult:__
+
+ * Az apa telefonszám mezőjébe az e-mail-címe került, a **@** karakter nem tetszett...
+ * A gondviselő nevében hibásan rögzült egy **a** karakter (ez például a felületen nem látszott, csak az adatbázisban - okát nem tudjuk...)
+ * Itt-ott bekerült **görög** betű miatt lett nagy skandalum...
+ * **Nem szabványos szóköz** - észrevehetetlen!
+ * A haladási napló tananyag részébe ilyenformán került be az x-négyzet: **x^2**... Nem bírt vele mit kezdeni a generáló...
+ * Záradékok között **2013_14** formában volt a tanév megadva - az alsóvonás döntötte romba a generálást...
+ * Lelkes Kolléganő az orosz nyelv tanárgy Tananyag mezőjét **cirill** betűkkel írta... (Ez egy régebbi bukta volt, azóta ha a sima tex helyett XeTeX-et használunk, és a config opciók közt engedélyezzük is (így a cirill betűkkel nem lesz többet gond...):
+
+ define('__NYOMTATAS_XETEX',true);
+
+ * Az alsósok szöveges értékelésében, a szabadon kitölthető mezőbe %-jel került.
+ * Alsósok szöveges értékelésénél amolyan szabadszöveg helyeként csupa alsóvonást írtak be...
+
+Ha nem boldogulnuk, kérjünk segítséget a **support**tól vagy a **levelezőlistán** a tapasztaltabb üzemeltetőktől!
+
+
+
+
+===== A haladási napló teljes ugyan, de hiányoznak tantárgyak, tankörök =====
+**Kérdés**
+A haladási napló minden napja megvan, de hiányos vagy üres, pedig a Kollégák minden órát beírtak. Mit tegyek?
+
+**Válasz**
+A //Napló-Nyomtatás-Tankör naplóhozrendelése// oldalon a vegyes tanköröket egyenlő számban szét kell osztani az érintett osztályok haladási naplójai között.
+
+Például a 7.ab testnevelés (lány) tankör órái a 7.a, míg a 7.ab testnevelés (fiú) tankör órái a 7.b haladási naplójában kerülnek adminisztrálásra.
+
+===== Az egyes tárgyak éves óraszáma nem megfelelő =====
+**Kérdés**
+A Bizonyítványban/Statisztikában megjelenő éves tárgyóraszám nem egyezik az előírttal. Miért?
+
+**Válasz**
+Az éves óraszámot a napló a tanítási napok száma / 5 egészrészével számolja, ami általában 37-re jön ki. Ettől eltérő éves óraszámot a /var/mayor/config/module-naplo/config-[iskola].php állományba írt sorokkal tudjuk kikényszeríteni:
+
+ define('__TANITASI_HETEK_OVERRIDE', true);
+ if (defined('__TANEV') && __TANEV==2017) {
+ define('___TANITASI_HETEK_SZAMA', 36);
+ define('___VEGZOS_TANITASI_HETEK_SZAMA', 30);
+ }
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/asc-ctrl-shift-e.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/asc-ctrl-shift-e.txt
new file mode 100644
index 00000000..2ee54f86
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/asc-ctrl-shift-e.txt
@@ -0,0 +1,53 @@
+
+====== aSc szöveges export: Ctrl-Shift-E ======
+
+Az aSc Timetables program képes - az XML exportnál ugyan kevésbé részletes, de használható - szöveges fomátumú exportra.
+A varázslatos billentyűkombináció: **Ctrl-Shift-E**
+
+(Sajnos az aSc nem ad csak úgy ilyen exportot (csak az első 10 rekordot adja ki). A gyártótól kell kérni - normál licensz birtokában - speciális export-licenszet.)
+
+===== Mit tegyünk a keletkezett állománnyal =====
+
+==== Eredeti állomány ====
+
+A kapott **txt** állományt mentsük el, készítsünk róla egy biztonsági másolatot, és nyissuk meg [[http://libreoffice.hu|LibreOffice Calc]]-cal (sokkal jobb ezzel dolgozni, mint Excel-lel, mert a végső csv export itt pofonegyszerű!)
+
+Az exportált állomány mezői:
+
+ Day Name, Day Number in Cycle, Period in Day, Period in Cycle, Form, Form 'short', Subject, Subject 'short', Classroom, Classroom 'short', Teacher Name, Teacher Short, Group, Cycle
+
+==== Átalakítás====
+
+Az állományt érdemes először a táblázatkezelő saját formátumában menteni, és a legvégén átalakítani **tabulátorokkal tagolt, UTF-8 kódolású csv**-be!
+
+A kinyert fájlban a **'Day Number in Cycle'**, a '**Period in Day'**, a **'Form'**, a **'Subject'**, a **'Classroom'** és a **'Teacher Name'** hordoz lényeges információt a megfelelő import fájl számára, a többi törölhető - de még ne tegyük!!!
+
+Az órarend MaYoR-ba való importálásához a következő mezőkre van csak szükség:
+
+ het nap ora tanarId osztalyJel targyJel teremId tolDt igDt
+
+ * A **het** mező vagyis az órarendi hét, mely egyhetes órarendnél persze végig 1. A '**Day Name'** mezőt érdemes átnevezni "het"-re majd végig egyessel feltölteni. Kéthetes órarendnél 1 és 2 az érték, lásd később!
+
+ * A **nap** mező tartalma a **'Day Number in Cycle'** tartalma legyen,
+
+ * az **ora** mezőjé a **'Period in Day'**,
+
+ * a **tanarId** a MaYoR-ban lévő tanárazonosítók,
+
+ * az **osztalyJel** tartalma a **'Form'** mező. Ez azonban a naplóban egy 6 karakteres mező, tehát célszerű rövidíteni: '7.a, 7.b' helyett '7ab', '5.a, 5.b, 6.a, 6.b' helyett '5-6' és hasonlók. Ha nem tesszük meg, az import során csonkolódik!
+
+ * A mumus a **targyJel**... nos, a kiexportált fájl **'Subject'** mezője sajnos nem hordoz elegendő információt erről. Ellenben az azonos tárgyhoz kapcsolódó eltérő tankörök kiválóan megkülönböztethetők a **'Subject'** és a **'Group'** mezők együttes használatával. Ez különösen akkor fontos, ha __azonos nevű tárgyat ugyanabban az osztályban ugyanaz a tanár több csoportban is__ tanít. A táblázatkezelő remek lehetőséget ad a tömeges módosításra, csak okosan kell használni.
+Erre valók az ÖSSZEFŰZ, HA, BAL és hasonló függvények.
+
+ * A **teremId** persze a **'Classroom'** (de itt is a MaYoR-ban használt teremId-k kellenek!),
+
+ * A **tolDt** és az **igDt** egyértelmű (éééé-hh-nn formában).
+
+==== Kéthetes órarend ====
+
+Kéthetes órarendnél szintén az eredeti export-állományt hívjuk segítségül. A **'Cycle'** mező mondja meg, hogy minden héten vagy csak az egyiken van a bizonyos óra. A külön hetieket hagyhatjuk, a közös órákat duplázni kell (megfelelő mező szerinti sorrend, sorok kijelölése, másolás, új sor, beillesztés).
+
+==== Feltöltés, összerendezés ====
+
+Ezt a csv fájlt kell feltölteni a szerverre, majd //Admin/Import - orarendiOra//, text fájl útvonala, és OK.
+A Ctrl-Shift-E módszer esetén mindenképp kézzel kell hozzárendelgetni a tanköröket az órarendi órákhoz (Órarend/Órarendi óra - tankör hozzárendelés) - de ez egy egészséges kompromisszum... :-).
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/beiratkozas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/beiratkozas.txt
new file mode 100644
index 00000000..b6504641
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/beiratkozas.txt
@@ -0,0 +1,61 @@
+====== Beiratkozás ======
+
+A **beiratkozás** az egyik legfontosabb adminisztratív esemény (:-)) egy iskola életében. A napló használatával egyszerűsíthető, legalábbis kevesebb lépcsőben valósítható meg ez az adafelvétel miatt kényes lépés.
+Az iskola hagyományait és lehetőségeit figyelembevéve rengeteg változat képzelhető el erre, egy lehetséges megoldást vázolok.
+
+=====Előkészítés=====
+
+====Ki végzi az adatrögzítést?====
+A beiratkozás általában nem egyemberes feladat. Azokat a géphasználatban jártas Kollégákat, akik segédkeznek, célszerű ideiglenesen a //titkarsag// csoportba felvenni (Felhasználói adatok - Csoportok keresése). Ezzel a diákok adatainak módosításához, felvételéhez jogot kapnak.
+
+====Új tanév nyitása====
+A beiratkozó diákok csak a következő tanévtől kerülnek be ténylegesen a naplóba, ezért meg kell nyitni a következő tanévet (Admin - Tanévek)
+
+====Előzetes adatfelvitel====
+
+A felvételt nyert tanulók adataiból készítsünk egy tabulátorokkal tagolt, UTF8 kódolású csv állományt a következő fejlécekkel:
+
+ oId viseltCsaladinev viseltUtonev nem kezdoTanev kezdoSzemeszter statusz
+
+ * oId =oktatási azonosító
+ * kezdoTanev = 2011
+ * kezdoSzemeszter = 1
+ * statusz = felvételt nyert
+
+A kész állományt töltsük fel valamilyen módon a naplót futtató szerverre, majd az Admin menüpontban emeljük be a //diak// táblába.
+
+=====Adatrögzítés a beiratkozás alkalmával=====
+
+Az Intézményi adatok menüben kiválasztjuk a következő tanévet, majd a Diákok menüben a „Felvételt nyert” csoportban jelennek meg az újoncok. Az oldal háttere zöld, ezzel is kiemelve a státuszt.
+Az adatokat értelemszerűen kitöltjük, majd a megfelelő dátummal a jogviszonyát rendezzük.
+
+Ez a módszer biztonságosan előkészített, egyes intézményekben speciális okok miatt az osztályba sorolás később valósul meg.
+
+A naplóból a későbbiek során tetszőleges adatokat lehet kinyerni – beiratkozási naplóhoz, statisztikához, egyéb nyilvántartáshoz.
+
+A beiratkozás után ne maradjon el a jogviszony váltás, egyeztetett
+dátum szerint!
+
+=====További ötletek, lehetőségek - ezt is olvassuk el...!=====
+
+Lehetőség van arra is, hogy előzetes adatfeltöltés nélkül vegyük fel az új diákokat. Ilyenkor a Diák lapon (a tanév és az osztály kiválasztása után) a //Bekerülés módja// mezőnél a **Felvétel osztályba** sort választva azonnal az osztályába is léptethető a diák.
+
+Érdemes egyeztetni a vezetőséggel, gazdasági irodával, titkársággal, könyvtárral, stb., hogy milyen adatokra van szükség az egyéb nyilvántartásokhoz. A napló rengeteg adatot kezel, ezek egy része kötelezően megadandó, más részükkel azonban óvatosan, megfelelő diszkrécióval kell bánni (elvált szülők, fogyatékosság, szociális helyzet, stb.).
+
+Feltétlenül javasolt ellenőrizni (eredeti dokumentumok alapján):
+
+ * diák neve, születéskori neve, második (harmadik) utónév, külföldi diákoknál melyik a vezeték- és melyik az utónév;
+ * jár-e testvére az iskolába, hiszen ilyenkor a szülői hozzárendelés egyszerűsödik;
+ * édesanyja neve, különös tekintettel a második (harmadik) utónévre;
+ * állandó lakcím vs. tartózkodási cím (a Fenntartók az állandó lakcím szerint adják-veszik a normatívát, ez mindenképp kell, de pl. értesítési cím miatt szükség lehet a "tényleges" címre is);
+ * email címeket érdemes a szülőktől begyűjteni (ha hozzájárul), hogy az azonosítók kiküldéséhez fel lehessen használni;
+
+Ha van rá szabad erőforrás és használja az iskola a [[naplo:small_faces|Képek a naplóban]] funkciót, el lehet készíteni a diákokról a fotókat - bár a tapasztalat szerint nem mindig a diák jelenik meg a beiratkozáson, így ezt talán érdemes az első szeptemberi napokra hagyni...
+
+=====Utólagos tennivalók=====
+
+Az ideiglenesen a //titkarsag// csoportba felvett Kollégákat vegyük ki a csoportból!
+
+Az új diákok osztályba sorolásáról ne feledkezzünk meg (ha nem közvetlenül osztályba vettük fel őket)!
+
+Ha előzetes adatfeltöltéssel dolgoztunk, nézzük át a listát, nem maradt-e benne olyan diák, aki __nem iratkozott be__! Ha találunk ilyet, járjunk utána, mi az oka az elmaradásnak: elfeledte az időpontot, esetleg mégis másik iskolába ment, vagy egyéb okok miatt nem jelent meg. Ha nem az iskolába fog járni, töröljük az adatbázisból! \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/dobozok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/dobozok.txt
new file mode 100644
index 00000000..304f8534
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/dobozok.txt
@@ -0,0 +1,55 @@
+===== Dobozok a portálon =====
+
+
+A portál modul bal- és jobboldalán megjelenő kis dobozokhoz (szótár, születésnaposok, stb.) hasonlóakat tudunk létrehozni, saját tartalommal.
+(Vigyázat: a túl sok információ sem jó, elvesznek benne a fontos dolgok...)
+
+Három szinten hozhatunk létre ilyet:
+ * public - bejelentkezés nélkül is látszik a kezdőoldalon;
+ * private - tanári és diákoldalak;
+ * parent - szülői oldalak.
+
+==== Elsőként... ====
+ ...tisztában kell lennünk vele, melyik skint használjuk.
+ * classic - nem változtattunk semmit, "gyári" kinézet;
+ * oldschool - a hagyományos, régi Mayor-felület;
+ * valami egyéni - de akkor házi készítés, és nyilvánvaló... :-)
+//(A classic változatot mutatom be...)//
+==== Második lépés =====
+Szerkesszük /var/mayor/config/module-portal/config.php állományt - a demo helyett írjuk be az iskola rövid nevét, pl. 'pod'!
+Ez volt:
+ define('__PORTAL_CODE','demo');
+Ez kell:
+ define('__PORTAL_CODE','pod');
+Majd másoljuk át a kívánt hozzáférési szinteken a módosítandó állományokat az iskola nevével:
+ # cp /var/mayor/www/policy/public/portal/portal/portal_demo.classic.php /var/mayor/www/policy/public/portal/portal/portal_pod.classic.php
+ # cp /var/mayor/www/policy/private/portal/portal/portal_demo.classic.php /var/mayor/www/policy/private/portal/portal/portal_pod.classic.php
+ # cp /var/mayor/www/policy/parent/portal/portal/portal_demo.classic.php /var/mayor/www/policy/parent/portal/portal/portal_pod.classic.php
+//(Javasolt mindhármat másolni - ha nem változtatunk, sem lesz baj belőle...)//
+
+==== Most jön az érdemi munka! ====
+A választott állományba be kell szúrni az új dobozhoz tartozó kódot. Nyissuk meg az állományt valamilyen szerkesztővel (pl. nano):
+ # nano /var/mayor/www/policy/parent/portal/portal/portal_pod.classic.php
+Majd keressük meg a 'putDoboz'-zal kezdődő sorokat!
+
+Alapesetben a 'parent' szinten a bal oldalon 3 doboz van:
+ * putDoboz('Védett modulok',...
+ * putDoboz('Születésnaposok :)',...
+ * putDoboz('Bejegyzések',...
+Ez alá lehet felvenni a következőt.
+Egy példa:
+ putDoboz('Iskolánk','Pod Iskola, Budapest', array('header-color'=>'#f7d722'));
+Ekkor a szülők oldalán megjelenik egy negyedik doboz, #f7d722 (sárga) színű "Iskolánk" fejléccel, "Pod Iskola" tartalommal.
+
+Egy egyszerű, de jól használható színkódos oldal:
+[[http://www.hungarotips.com/grafika/szinek/]]
+
+A tartalmat lehet formázni, pl. a következő kód már középre igazítja a félkövér szöveget:
+ putDoboz('Iskolánk','<center>'.'<b>'.'Pod Iskola, Budapest', array('header-color'=>'#f7d722'));
+Ha képet szeretnénk elhelyezni a dobozban, akkor a képet másoljuk be a /var/mayor/www könyvtárba, és adjunk neki megfelelő jogosultságot:
+ # chmod 644 /var/mayor/www/kep.png
+És a beszúrandó:
+ putDoboz('Iskolánk','<center>'.'<img src="kep.png" width="60">', array('header-color'=>'#f7d722'));
+A lehetőségek végtelenek...! :-)
+
+(Köszönet az ötletekért Bencének és Józsa Viktornak!) \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/evvegi_teendok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/evvegi_teendok.txt
new file mode 100644
index 00000000..5b407292
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/evvegi_teendok.txt
@@ -0,0 +1,63 @@
+====== Évvégi teendők ======
+
+===== Időszakok felvétele =====
+
+Az [[naplo:admin:szemeszterek|Admin/Szemeszterek]] menüpont alatt vehetjük fel a zárás/bizonyítvány írás időszakokat - hogy a kollégák le tudják zárni a tanulókat.
+
+Két új időszakot kell felvenni a félévzárási teendőkhöz:
+
+ * **zárás** - amely intervallumban a _szaktanár_ az osztályozó naplóban zárójegyet írhat be
+ * **bizonyítvány írás** - amely intervallunban az _osztályfőnök_ a magatartás és szorgalom jegyeket rögzíthetik. (Ez tipikusan bővebb, mint a zárási időszak)
+
+===== Bizonyítvány írás =====
+
+A konferenciák után a bizonyítvány írás következik. A konferencián történt módosításokat kell először átvezetni (esetleg elmaradt lezárások pótlása, hibás
+jegyek javítása, magatartás/szorgalom jegyek véglegesítése). Ez után foghatnak az osztályfőnökök a bizonyítványok írásához. Ehhez célszerű az
+[[naplo:osztalyozo:targysorrend|Osztályozó napló/Tárgysorrend]] alatt a megfelelő tárgysorrendeket kialakítani (''bizonyítvány'' nevű sorrend). Az
+[[naplo:osztalyozo:bizonyitvany|Osztályozónapló/Bizonyítvány]] nézetben diákonként látjuk a jegyeket és az éves óraszámot - ez talán a legjobban használható oldal
+a bizonyítványok kitöltéséhez.
+
+Vigyázzunk a hiányzási adatokkal - az utolsó napokban is változhat - kellemetlen, ha a bizonyítványban kell javítani...
+
+===== Ellenőrzés =====
+
+Jegyek beírása után összeolvasással (bizonyítvány, anyakönyv, elektronikus napló) ellenőrizzük az adatok helyességét!
+Fontos lépés, ne hagyjuk ki! Igen kellemetlen, ha a kinyomtatott, illetve az elektronikus napló
+adatai eltérnek a kitöltött bizonyítvány adataitól.
+
+===== Nyomtatás =====
+
+Csak akkor fogjunk hozzá a nyomtatáshoz, ha az adatokat ellenőriztük! Nagymennyiségű papírhulladéktól kímélhetjük meg magunkat ezzel...
+
+Két fö dokumentumot nyomtathatunk ki: a haladási naplót és az osztályozó naplót.
+
+A haladási naplóhoz szét kell osztanunk a több osztályt is érintő tanköröket, hogy melyik osztály naplójában jelenjenek meg az óráik
+([[naplo:nyomtatas:tankornaplohozrendeles|Nyomtatás/Tankör naplóhoz rendelése]]).
+
+Fontos a helyes [[naplo:osztalyozo:targysorrend|Osztályozó napló/tárgysorrend]] beállítása is, mert az első oldalakon csak 6 oszlopnak van hely
+(ld: [[gyik:naplo#haladasi_naplo_nyomtatasakor_a_hibahibas_rossz_adat_elso_oldal_targyak_szama_7_hibauezenetet_kapom|GYIK]]).
+
+===== Tanév lezárása =====
+
+A tanév lezárása ([[naplo:admin:tanevek|Admin/Tanévek/Tanév lezárása]]) több külön-külön is elvégezhető lépést takar:
+
+ - Végzős tanulók jogviszonyának lezárása
+ - Végzős tanulók osztályokból való kiléptetése
+ - Végzős tanulók tankörökből való kiléptetése
+ - Végzős tanulók azonosítóinak törlése
+ - A tanév adatbázisának lezárása (csak olvasható lesz).
+
+Ez utóbbi lépés után a többi már nem végezhető el, csak ha újra megnyitjuk a tanévet.
+
+====== A következő tanév előkészítése ======
+
+A tanév lázárásával párhuzamosan mindenképp fontos, hogy előkészítsük a következő tanévet. Minden, ami előre tudható, jó ha minél hamarabb rögzítésre kerül a naplóba:
+
+ - Új tanév felvétele, dátumok pontosítása a tanév rendje rendelet szerint
+ - Éves munkaterv inicializálása (ehhez a helyes nyitó és záródátumok, valamint annak ismerete kell, hogy hány hetes órarenddel fog működni az intézmény (A-hét, B-hét pl.). A munkarendbe a központilag előírt szünetek előre felvehetők, valamint a mozgó ünnepek (húsvét, pünkösd...). A többi gondolom az év elei értekezleteken fog eldőlni.
+ - Új osztályok felvétele, osztályfőnökök kinevezése
+ - Új diákok felvétele (osztályonként) - akár a beiratkozás előtt, a beíratkozáskor pontosítva az adatokat - a néhány kimaradót utólag könnyen törölhetjük
+ - Felmenő tankörök óraszámainak ellenőrzése, tanárváltások adminisztrálása
+ - Új tankörök felvétele, óraszámokkal, tanárokkal, esetleg névsorral (ha már tudható)
+ - Tankörcsoportok, tankörblokkok létrehozása (tanév függő!)
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/facebook.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/facebook.txt
new file mode 100644
index 00000000..bdf19a5f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/facebook.txt
@@ -0,0 +1,28 @@
+===== Belépés Facebook-fiókkal =====
+A beállítás időigényes, többlépcsős, úgyhogy nyugodt körülmények közt érdemes végezni!
+
+==== Valid cert létrehozása ====
+Első lépésként - ha még nincs - hozzunk létre és állítsunk be érvényes, a böngészők által elfogadott tanúsítványt, pl. a Let'Encript-félét!
+
+Részletek [[hogyan:tanusitvany|itt]]!
+
+==== Facebook-fiókos azonosítás beállítása ====
+
+Egy működő (célszerűen saját) Facebook-fiókban lépjünk az [[https://developers.facebook.com/apps|alábbi]] oldalra!
+
+Csináljuk végig a gyors regisztrálást (register), majd kattintsunk az **Add a new app**-ra és válasszuk a **Facebook login WWW**-t! Lépegessünk végig a pontokon (a **Set up - Web - Site URL** mezőbe írjuk a https-es naplóelérést!), és végezzük el a következő beállításokat:
+
+Settings -> valid oauth redirect -> a https-es URL (https://yeti.szag.hu) -> Save
+Products/Basics -> app domains -> a napló teljes neve (yeti.szag.hu) -> Save
+Products/Basics -> namespace -> (szagyeti) -> Save
+
+Ezután a dashboard-ból másoljuk ki az App Id-t és a Secret-et, és a /etc/mayor/main-config.php fáljba a következő módon illesszük be:
+
+ define('__FBCONNECT_ENABLED', true);
+ define('__FB_APP_ID', 'IDE_IRJUK_AZ_APP_ID-T');
+ define('__FB_APP_SECRET', 'IDE_IRJUK_A_SECRET-ET');
+
+Ezután a normál jelszóval belépés után a lakat alatt megjelenik egy F jelre lépve, vagy a menüben a „facebook azonosítás” menüben lehet összekötni a beléptetett usert a saját fiókjával.
+
+Érdemes fokozottan felhívni a figyelmet a kényelem okozta esetleges hátrányokra - különösen a publikusan használt gépeken!
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_evvegi_elrejtese.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_evvegi_elrejtese.txt
new file mode 100644
index 00000000..b1ecd9fd
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_evvegi_elrejtese.txt
@@ -0,0 +1,33 @@
+A napló lehetőséget ad arra, hogy a diák- és szülői oldalakon a **félévi** ill. az **évvégi zárójegyet elrejtsük** a szemeszter végéig. A feladat több lépésből áll.
+
+**FIGYELEM! Azoknál a naplóknál, ahol fut a Hírnök és/vagy az email-es értesítő, az alábbi lépések nem elégségesek!**
+
+==== Config állomány szerkesztése ====
+
+
+Lépjünk be a ///var/mayor/config/module-naplo/config-[iskola].php// állományba és keressük meg a
+
+ // Félévi és év végi osztályzatok elrejtése a diákok elől a szemeszter végéig
+ define('_OSZTALYZATOK_ELREJTESE', true);
+
+sorokat. Így, ebben a formában a zárójegyek rejtése élesített.
+
+==== Menü szerkesztése ====
+
+A fenti megoldás az osztályozónapló nézetben működik, viszont leleményes diákok rájöttek, hogy a bizonyítvány nézetben simán ott virítanak a zárójegyek.
+Ennek kiküszöbölésére tüntessük el ideiglenesen a menükből a bizonyítvány menüpontot!
+
+Szerkesszük a ///var/mayor/config/menu/parent/menu-hu_HU.php// és a ///var/mayor/config/menu/private/menu-hu_HU.php// állományokat! Így kell kinézniük (vagy ennek is bennük kell lenni):
+
+ <?php
+ // Bizonyítvány menü eltüntetése
+ unset($MENU['modules']['naplo']['sub']['osztalyozo']['bizonyitvany']);
+ ?>
+
+Ezzel a szülői- és a diákoldalakon eltűnik a Bizonyítvány menüpont.
+A dolog szépséghibája, hogy a tanári oldalakról is eltűnik, de valamit valamiért... :-)
+
+(Ne felejtsük el visszatenni a menüpontot, ha már úgysem aktuális a rejtegetés...)
+
+**Figyelem!** A zárójegyek az Osztályozó napló oldalain a __szemeszter zárónapján éjfélig__ lesznek rejtettek!
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_teendok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_teendok.txt
new file mode 100644
index 00000000..08c6f073
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felevi_teendok.txt
@@ -0,0 +1,49 @@
+====== Félévi teendők ======
+===== Adminisztrátorok =====
+
+Admin menüpont >> Szemeszterek almenü
+
+Két új időszakot kell felvenni a félévzárási teendőkhöz:
+
+ * **zárás** - amely intervallumban a szaktanárok az osztályozó naplóban zárójegyet írhatnak be
+ * **bizonyítvány írás** - amely intervallumban az osztályfőnökök a magatartás és szorgalom jegyeket rögzíthetik. (Ez tipikusan bővebb, mint a zárási időszak. A zárási és a bizonyítvány írási időszak kezdetének szigorúan meg kell egyeznie!)
+
+__Megjegyzés:__ Amennyiben a félév végéig a zárójegyeket el szeretnénk rejteni a diákok és szülők elől, tegyük meg az alábbi lépéseket:
+
+ * **config fájl módosítása** - a /var/mayor/config/module-naplo/config-iskolaneve.php állományban módosítsuk (vegyük fel) az alábbi bejegyzést:
+
+ // Félévi és év végi osztályzatok elrejtése a diákok elől a szemeszter végéig
+ define('_OSZTALYZATOK_ELREJTESE', true);
+
+ * **menü módosítása** - az előző változtatás eredménye (sajnos) kikerülhető, ha a diák/szülő a bizonyítvány menüt választja, amit viszont eltüntethetünk ideiglenesen (!) a /var/mayor/config/menu/private **és** a /var/mayor/config/menu/parent könyvtárakban található //menu-hu_HU.php// fájl szerkesztésével (ha nincs, másoljuk be és nevezzük át a mintaállományt), amibe illesszük be az alábbi sorokat:
+
+ // Bizonyítvány menüpont eltüntetése
+ unset($MENU['modules']['naplo']['sub']['osztalyozo']['bizonyitvany']);
+
+A félév lezártával ne feledjük az előbbi sorokat mindkét állományban kikommentelni!
+
+===== Szaktanárok =====
+
+Osztályozó napló menüpont
+
+Az osztályozó napló menüpontban a saját tankörének kiválasztása után a Bizonyítvány oszlopban megjelennek
+az adható zárójegyek.
+
+A "zárás" időszakában ezek a jegyek tetszőlegesen módosíthatók. Vegyük figyelembe, hogy a beírás pillanatától
+az arra jogosultak (diákok és szüleik) egyből látják saját zárójegyeiket.
+
+===== Osztályfőnökök =====
+
+Osztályozó napló menüpont, Zárási statisztika almenü
+
+A saját osztály kiválasztásakor tetszőleges tárgysorrendet állítva látszódnak az osztály diákjainak zárójegyei, ebből képzett
+egyszerű átlaga, valamint az igazolt és igazolatlan hiányzásai. Ez alapján a jobb oldali oszlopban adható magatartás
+és szorgalom értékelések. Ne felejtsük a lap alján a beír gombbal rögzíteni.
+
+A "bizonyítvány írás" időszak végéig ezek a bejegyzések módosíthatók.
+
+===== Vezetőség =====
+
+Ellenőrzik a beírt jegyeket és hiányosságokat. Szükség esetén - a határidők lejárta után - javítják a téves adatrögzítésből
+adódó hibás bejegyzéseket.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznaloi_azonositok_generalasa.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznaloi_azonositok_generalasa.txt
new file mode 100644
index 00000000..3b687733
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznaloi_azonositok_generalasa.txt
@@ -0,0 +1,94 @@
+====== Felhasználói azonosítók generálása ======
+
+** Figyelem **
+
+A rev2009-es számú kiadásban (2010. március végén) a MySQL adattábla szerkezete változott. Megszüntettük a `type` mezőt és átnevezésre
+került a groupId-->groupCn és groupName-->groupDesc . A továbbiakban ezt a formát részletezzük...
+
+** Megjegyzés: **
+
+Az alább leírt módszer némi gyakorlattal hatékonyabb és gyorsabb lehet, mint a web-es kezelőfelület használata, de nyilván több buktatóval is jár. Ha valaki nem biztos benne, hogy az alább leírtak szerint meg tudja oldani az azonosítók generálását, akkor inkább maradjon a felület nyújtotta lehetőségeknél:
+ * [[naplo:admin:azonositok|diák azonosítók generálása]]
+ * [[session:createAccount|új azonosító létrehozása]]
+
+----
+
+A tanárok és diákok számára generálhatunk felhasználói azonosítókat az intézmény ''tanar'' és ''diak'' adattáblájának adataiból - amennyiben MySQL háttéradatbázist használunk. Egy lehetséges megoldást mutatunk itt be.
+
+Lépjünk be az intézmény adatbázisába (''intezmeny_[intézmény rövid neve]''), majd ideiglenesen módosítsuk a ''tanar'' táblát egy új mező hozzáadaásával, majd töltsük is fel adatokkal:
+
+ alter table tanar add column userAccount varchar(32);
+ update tanar set userAccount=concat(viseltCsaladinev,'.',substring_index(viseltUtonev,' ',1));
+
+Amint látható Családinév.Utónév alakú azonosítókat készítettünk. A következő lépés, hogy ellenőrizzük, van-e ütközés:
+
+ select userAccount,count(*) as db from tanar group by userAccount having db>1;
+
+Ha van, akkor az azonosítót egy megfelelő ''update'' paranccsal módosítsuk (pl. Utónév.Családinév alakra). Az ütközések kiküszöbölése után hasonlóan készítsük el a diákok azonosítóit is:
+
+ alter table diak add column userAccount varchar(32);
+ update diak set userAccount=concat(viseltCsaladinev,'.',substring_index(viseltUtonev,' ',1));
+ select userAccount,count(*) as db from diak group by userAccount having db>1;
+ +--------------------+----+
+ | userAccount | db |
+ +--------------------+----+
+ | Kovács.János | 2 |
+ +--------------------+----+
+
+
+Itt nagyobb eséllyel fogunk ütközésre lelni, de az ütköző ''userAccount''-ok megváltoztatásával ezek könnyen kiküszöbölhetőek. A fenti példában azt látjuk, hogy két Kovács.János azonosító is szerepel a listában. Kérdezzük le ezek többi adatát is:
+
+ select diakId,viseltCsaladinev,viseltUtonev from diak where userAccount='Kovács.János';
+ +--------+------------------+--------------+
+ | diakId | viseltCsaladinev | viseltUtonev |
+ +--------+------------------+--------------+
+ | 5 | Kovács | János |
+ | 303 | Kovács | János |
+ +--------+------------------+--------------+
+
+Majd az egyik érintett diák azonosítóját változtassuk meg (pl. diákId alapján):
+
+ update diak set userAccount='János.Kovács' where diakId=303;
+
+A módosítások után ismét ellenőrizzük az ütközéseket. Ha nincs több ütközés, akkor meg kell még vizsgálnunk, hogy a tanári és diák azonosítók között nincs-e egyforma:
+
+ select * from tanar left join diak using (userAccount) where diakId is not null;
+
+Ha találunk ütköző azonosítókat, akkor azokat a fentiek alapján ismét módosíthatjuk. Ha úgy tűnik, hogy az azonosítók rendben vannak, akkor vegyük fel őket, először például a tanárokat:
+
+ insert into mayor_private.accounts (policy,userAccount,userCn,userPassword,studyId)
+ select 'private',userAccount,concat_ws(' ',viseltNevElotag,viseltCsaladinev,viseltUtonev) as userCn,
+ sha('kezdetiJelszó') as userPassword,oId as studyId from tanar;
+
+Érdemes a tanári azonosítókat rögrön berakni a tanár csoportba is:
+
+ set @gid = (select gid from mayor_private.groups where groupCn='tanar');
+ insert into mayor_private.members (uid,gid) select uid,@gid from mayor_private.accounts
+ where userAccount in (select userAccount from tanar);
+
+Majd betöltjük a diákok azonosítóit is.
+
+ insert into mayor_private.accounts (policy,userAccount,userCn,userPassword,studyId)
+ select 'private',userAccount,concat_ws(' ',viseltNevElotag,viseltCsaladinev,viseltUtonev) as userCn,
+ sha(crc32(viseltCsaladinev)) as userPassword,oId as studyId from diak;
+
+Az előző betöltéshez képest egy különbséget figyelhetünk meg: a kezdeti jelszónak most nem egy konstans értéket állítunk be, hanem a tanuló vezetéknevének CRC32-es kódját.
+Ez könnyen reprodukálható, megfelelő induló jelszó lehet.
+
+Rakjuk be az új azonosítókat a diák csoportba:
+
+ set @gid = (select gid from mayor_private.groups where groupCn='diak');
+ insert into mayor_private.members (uid,gid) select uid,@gid as gid from mayor_private.accounts
+ where userAccount in (select userAccount from diak);
+
+Már csak az van hátra, hogy az ideiglenes változtatásokat helyreállítsuk:
+
+ * A ''tanar'' és ''diak'' tábla userAccount mezőjének törlése
+
+ alter table tanar drop column userAccount;
+ alter table diak drop column userAccount;
+
+Utolsó lépésként állítsuk be a shadow attribútumokat (ezek befojásolják, hogy a jelszó mennyi ideig érvényes, mikor kell megváltoztatni, stb...)
+
+ update mayor_private.accounts set shadowMin=1,shadowMax=90,shadowWarning=10,shadowInactive=10;
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznalonevek_megvaltoztatasa.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznalonevek_megvaltoztatasa.txt
new file mode 100644
index 00000000..52365592
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/felhasznalonevek_megvaltoztatasa.txt
@@ -0,0 +1,71 @@
+====== Felhasználónevek megváltoztatása ======
+
+Ritkán, de előfordul, hogy a felhasználóneveket meg kell változtatnuk:
+ * túl hosszúra sikerült asszonynevek;
+ * házasság;
+ * válás;
+ * hivatalos névváltozás
+során.
+
+A változtatás módjai:
+ * mayoradmin-ként belépve a Felhasználói adatoknál az account-ot töröljük, majd újat veszünk fel. Fontos, az oktatási azonosító, és a csoporttagság ne változzon!
+ * elegánsabb, de nehezebb MySQL-ben, ezért aki nem biztos benne, hogy mit és hogyan csinál, válassza az a)-t vagy kérjen konkrét segítséget!
+
+Példánkban a **Kiss Virág** tanár nevét cseréljük le **Nagyné Kiss Virág**ra.
+
+Lépjünk be a megfelelő adatbázisba (szülők esetén a //mayor_parent//, mindenki más esetén a// mayor_private// adatbázisba!
+
+ # mysql -p mayor_private
+ Enter password:
+
+Keressük meg a felhasználónkat az //accounts// táblában!
+
+ mysql> SELECT uId,userAccount,userCn FROM accounts WHERE userCn LIKE '%Virág%';
+
+(Előfordulhat, hogy több Virág nevű felhasználó is van, válogassunk! :-) )
+
+Valami ehhez hasonlót kell kapni:
+
+ +-----+---------------------+----------------------------+
+ | uId | userAccount | userCn |
+ +-----+---------------------+----------------------------+
+ | 18 | Kovács.Virág | Kovács Virág |
+ | 26 | Virág.István | Virág István |
+ | 468 | Kiss.Virág | Kiss Virág |
+ +-----+---------------------+----------------------------+
+
+Jegyezzük meg az //uId// értéket, ezzel egyszerűbbé válik a munka!
+
+Ellenőrizzük, hogy az új azonosító létezik-e már!
+
+ SELECT uId,userAccount,userCn FROM accounts WHERE userAccount='Nagyné.Kiss.Virág';
+
+Ha ezt kapjuk:
+
+ Empty set (0.00 sec)
+
+mehet a változtatás, ellenben ha találat van (egyszerűbb nevek esetén), akkor keressünk másik felhasználónevet (**Nagyné-Kiss-Virág**, **Nné.Kiss.Virág**, stb.)!
+
+Cseréljük le a //userAccount// értéket (belépési név)!
+
+ UPDATE accounts SET userAccount='Nagyné.Kiss.Virág' WHERE uId=468;
+
+Cseréljük le a //userCn// értéket (megjelenő név)!
+
+ UPDATE accounts SET userCn='Nagyné Kiss Virág' WHERE uId=468;
+
+Ellenőrizzük!
+
+ mysql> select uId,userAccount,userCn from accounts where userCn like '%Virág%';
+
+ +-----+---------------------+----------------------------+
+ | uId | userAccount | userCn |
+ +-----+---------------------+----------------------------+
+ | 18 | Kovács.Virág | Kovács Virág |
+ | 26 | Virág.István | Virág István |
+ | 468 | Nagyné.Kiss.Virág | Nagyné Kiss Virág |
+ +-----+---------------------+----------------------------+
+
+Kérjük meg a Felhasználót, hogy lépjen be a saját account-jával!
+
+__Jótanács:__ ne változtassunk nyakra-főre a felhasználóneveken, csakis indokolt esetben! Mindenképpen kerüljük a becenév (Kata, Feri, Jocó), kitalált név (Zorró, A.Nagy.Fekete.Ember, stb), és zagyva karakterhalmaz (krtz, JB007, stb) típusú neveket! \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/google.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/google.txt
new file mode 100644
index 00000000..331834fa
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/google.txt
@@ -0,0 +1,26 @@
+===== Belépés Google-fiókkal =====
+A beállítás időigényes, többlépcsős, úgyhogy nyugodt körülmények közt érdemes végezni!
+==== Valid cert létrehozása ====
+Első lépésként - ha még nincs - hozzunk létre és állítsunk be érvényes, a böngészők által elfogadott tanúsítványt, pl. a Let'Encript-félét!
+
+Részletek [[hogyan:tanusitvany|itt]]!
+
+==== Google-fiókos azonosítás beállítása ====
+
+Egy működő (célszerűen saját) Google-fiókba belépve lépjünk az [[https://console.developers.google.com/apis/credentials|API]]-oldalra!
+
+A **Create Credentials** válasszuk a **Create Oauth client id** lehetőséget, majd a **Web application**-t! A **Name** mezőbe adhatunk valami értelmes nevet (ami alapján később is tudjuk azonosítani), majd a **Authorized JavaScript origins** mezőjébe a **https-es URL**-t kell beírni!
+
+A létrehozott kliens adatai közül kimásolandók: **Client ID** és a **Client secret**
+(A Client secret sok betű-szám, míg a Client ID sok szám-sok betű és apps.googleusercontent.com a vége - ez is kell...)
+
+
+Ezek után a naplóban a ///etc/mayor/main-config.php// fájban végezzük el a követekező módosításokat:
+
+ define('__GOOGLEAPI_ENABLED', true);
+ define('__GOOGLEAPI_CLIENT_ID','IDE_IRJUK_A_CLIENT_ID-T');
+ define('__GOOGLEAPI_CLIENT_SECRET','IDE_IRJUK_A_CLIENT SECRET-ET');
+
+Ezután a normál jelszóval belépés után a lakat alatt megjelenik egy **G+** jelre lépve, vagy a menüben a "google azonosítás" menüben lehet összekötni a beléptetett usert a saját fiókjával.
+
+Érdemes fokozottan felhívni a figyelmet a kényelem okozta esetleges hátrányokra - különösen a publikusan használt gépeken! \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/haladasi_utolag.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/haladasi_utolag.txt
new file mode 100644
index 00000000..7631501a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/haladasi_utolag.txt
@@ -0,0 +1,41 @@
+====== Bejegyzés a Haladási naplóba - utólag ======
+
+Miért lehet erre szükség?
+
+ * nem lett kész a napló tanévkezdésre, így az első napokra nem töltődött be a Haladási napló;
+ * leállt a szerver, ilyen-olyan okok miatt nem lehetett néhány napig visszakapcsolni;
+ * elindult egy plusz tankör, szakkör, előkészítő, stb., de az adminisztráció lekéste a valódi, naptárbeli kezdést;
+ * ...
+
+Lehetőség szerint kerüljük az utólagos módosításokat (technikailag lehetséges minden, de az elszámolásoknál, hiányzásoknál, statisztikáknál galibát okozhat!).
+
+Az **Órarend**ben az órák jobb felső sarkában megjelenő kis kör jelzi, hogy az adott óra már a Haladási naplóban van.
+
+Fontos tudni, hogy a Haladási naplóba akkor kerül be az óra, ha
+
+ * elértük az adott nap dátumát (0:00:00) és valaki belépett a naplóba (várjuk meg az éjfélt és próbáljuk ki... :-D);
+ * az adott napra valamilyen helyettesítéssel kapcsolatos esemény (tanár hiányzása, máskor megtartott óra, stb.) rögzítésre kerül.
+
+===== Egy-egy óra beírása, vagy sok óra beírása lassan... =====
+
+A //mayoradmin// és a //vezetőség// tagjai a **Napló/Haladási napló/Plusz óra** menüben vehetnek fel visszamenőlegesen órákat.
+
+Értelemszerűen a dátum kiválasztása az első, majd **tanár**, **osztály**, **tankör** szerint szűkíthetjük a lehetőségeket. Megjelenik az adott napra a kiválasztott személy/csoport órája. A MaYoR figyeli a tanárt és az osztályt/tankört is, tehát, adott tanárnak adott tankörrel csak akkor enged órát felvenni, ha mindketten "lyukasak".
+
+A megjelenő táblázat alapján választhatjuk ki a legördülő listából a még szabad órákat. Ezek után csak a terem megadása következik, valamint az óra típusának beállítása:
+ * plusz óra (egyedi alkalom);
+ * órarendi óra (utólagos, "normál" órarendbeli óra pótlása a Haladási naplóban).
+
+Ez a módszer ugyan lassacska egy egész iskola elmaradt napjának pótlására, de rendkívül hasznos, mert semmilyen bakit nem hagy elkövetnünk! :-D
+
+===== Teljes elmaradt nap egyszerű(bb) pótlása =====
+
+Ha valamilyen ok miatt nem töltődött be a Haladási naplóba az aktuális nap (ld. fent, szerver-leállás, stb.), akkor a legegyszerűbb azokat a
+[[naplo:admin:fillhaladasi|Napló/Admin/Haladási napló feltöltése]] menüpont alatt feltölteni.
+
+A //mayoradmin// és a //vezetőség// a **Helyettesítés** menüben is eljárhat.
+A **Napló/Haladási napló/Helyettesítés** menüben ha egy napra szeretnénk betölteni a Haladási naplóba az egész intézmény óráit, akkor a legördülő menüben kiválasztjuk a keresett napot, majd anélkül, hogy helyettesítésre kijelölt tanárt választanánk, nyomjuk meg az **OK** gombot.
+Ezzel az adott napra, az **orarendiOra** tábla alapján, betöltődnek az órák a Haladási naplóba.
+
+Ha nincs kézzelfogahtó magyarázat a Haladási napló hiányára, feltétlenül járjunk utána, mi okozhatta a hibát (egy kósza SQL-bejegyzés az **ora** táblában, **orarendiOra** táblában rossz dátum, az **Éves munkatervben** rosszul felvett nap, stb.) Ha nem boldogolunk, keressük meg a **Support**ot!
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hasznos_sql_gyujtemeny.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hasznos_sql_gyujtemeny.txt
new file mode 100644
index 00000000..3cf7105d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hasznos_sql_gyujtemeny.txt
@@ -0,0 +1,159 @@
+===== SQL szintű módosítások hasznos gyűjteménye =====
+
+==== Egy évfolyam tanulóinak adott tárgyból szerzett osztályzatai ====
+
+**Példa:**
+A kompetencia méréshez szükségünk van az előző év (példánkban 2012) végi 7. évfolyamosok matematika osztályzataira.
+
+ SELECT CONCAT_WS(' ', viseltCsaladinev, viseltUtonev) AS diakNev, targyNev, jegy
+ INTO OUTFILE '/tmp/2012matematika7.txt' FROM zaroJegy LEFT JOIN diak USING (diakId) LEFT JOIN targy USING (targyId)
+ WHERE targyNev='matematika' AND evfolyam=7 AND felev=2
+ AND hivatalosDt = (SELECT zarasDt FROM szemeszter WHERE tanev=2012 AND szemeszter=2);
+
+==== Hiányzás beírás elmulasztása ====
+
+**Példa:**
+Szeretnénk megtudni, hogy hányszor fordult elő egy-egy kollégával, hogy az ő órájára utólag valaki más írt be hiányzót. Ez tipikusan olyankor fordul
+elő, mikor a kolléga nem ír be hiányzót, majd az osztályfőnök ezt pótolja helyette.
+
+Az adatbázisban a ''hianyzas.rogzitoTanarId'' tárolja, hogy ki írta be a hiányzást, a ''rogzitesIdoben'' mező 1 értéke pedig azt jelzi, ha a beírás
+még a szaktanárra vonatkozó határidő lezárta előtt megtörtént (ekkor lehet teljesen vétlen a tanár, hisz ha az ofő reggele előre beírja a hiányzót,
+akkor a szaktanárnak már nincs erre módja).
+
+ select ki, viseltCsaladinev, viseltUtonev, count(rogzitoTanarId)
+ from hianyzas left join ora using (oraId) left join intezmeny_vmg.tankorTanar using (tankorId)
+ left join intezmeny_vmg.tanar on ki=tanar.tanarId
+ where ki<>rogzitoTanarId and rogzitesIdoben<>1 group by ki, viseltCsaladinev, viseltUtonev;
+
+
+==== Egy munkaterv óráinak betöltésre adott napra ====
+
+**Példa szituáció:**
+Az intézményben általános iskola és gimnázium is működik - eltérő munkatervvel. Egy adminisztrációs hiba miatt egyik napra csak a gimnázium órái töltődtek be
+(az általános iskola munkaterve eredetileg tanítás nélküli napként jelölte az adott dátumot), de utólag be kell töltenünk az általános iskola óráit is. Nem törölhetjük
+a már betöltött órákat, hisz vannak már beírt órák, hiányzások.
+
+**Megoldás:**
+ * Legyen az adott dátum: 2013-02-27
+ * Az adott napi órarendi hét: 1
+ * Az általános iskola munkatervId-je: 2
+ * A tanév adatbázisa: naplo_vmg_2012
+ * Az intézéményi adatbázis: intezmeny_vmg
+
+Ekkor az SQL utasítás:
+
+ INSERT INTO naplo_vmg_2012.ora (dt,ora,ki,tankorId,teremId,tipus,eredet)
+ SELECT '2013-02-27',ora,orarendiOra.tanarId AS tanarId, orarendiOraTankor.tankorId AS tankorId,teremId, 'normál','órarend'
+ FROM naplo_vmg_2012.orarendiOra LEFT JOIN naplo_vmg_2012.orarendiOraTankor USING (tanarId,osztalyJel,targyJel)
+ WHERE orarendiOraTankor.tankorId IS NOT NULL AND tankorId IN (
+ SELECT DISTINCT tankorId FROM intezmeny_vmg.tankorOsztaly
+ WHERE osztalyId IN (SELECT distinct osztalyId FROM naplo_vmg_2012.munkatervOsztaly WHERE munkatervId=2)
+ )
+ AND het=1 AND nap=3 AND tolDt<='2013-02-27' AND igDt>='2013-02-27'
+
+==== Be nem lépett szülők ====
+
+(Átnézetlen lekérdezés)
+
+Kik azok a szülők akik január elseje óta nem léptek be.
+
+A megoldásom az alábbi sql utasítás lenne:
+
+ SELECT `userAccount`
+ FROM mayor_parent.accounts
+ WHERE userAccount NOT
+ IN (
+ SELECT `userAccount`
+ FROM mayor_login.loginLog
+ GROUP BY mayor_login.loginLog.`userAccount` , mayor_login.loginLog.`policy`
+ HAVING MAX( mayor_login.loginLog.`dt` ) >= '2013-01-01 00:00:00'
+ AND mayor_login.loginLog.`policy` = 'parent'
+ )
+
+==== Két tankör egyesítése visszamenőleg ====
+
+**Példaszituáció**
+Félévkor az egyik tanulócsoportban tanárváltás történt, de ezt - helytelenül - úgy oldottuk meg, hogy új tankört is felvettünk az új tanárnak. Utóbb szeretnénk
+rendezni a helyzetet, hogy pl. az óraszámok folyamatosan számozódjanak.
+
+**Megoldás**
+ * Legyen az új tanár azonosítója: 49
+ * A korábbi tankör azonosítója: 462
+ * Az újabb tankör azonosítója: 613
+ * Az intézményi adatbázis neve: intezmeny_eventus
+ * Feltesszük továbbá, hogy a megefelő tanév adatbázisában állunk
+
+Ekkor:
+
+ set @tanarId=49;
+ set @new=613, @old=462;
+
+ START TRANSACTION;
+
+ -- A tankorId-k cseréje a megfelelő táblákban
+ update ora set tankorId=@old where tankorId=@new;
+ update jegy set tankorId=@old where tankorId=@new;
+ update tankorDolgozat set tankorId=@old where tankorId=@new;
+ update orarendiOraTankor set tankorId=@old where tankorId=@new;
+ update intezmeny_eventus.tankorTanar set tankorId=@old where tankorId=@new;
+
+ -- A tankorTanar táblában kiiktatjuk az átfedéseket - ez nem biztos, hogy szükséges!
+ -- Elöbb kiírjuk a módoítás előtti állapotot
+ select * from intezmeny_eventus.tankorTanar where tankorId in (@old, @new);
+ set @kiDt=(SELECT beDt from intezmeny_eventus.tankorTanar where tankorId=@old and tanarId=@tanarId);
+ update intezmeny_eventus.tankorTanar set kiDt=@kiDt - interval 1 day where tankorId=@old and tanarId<>@tanarId;
+ -- Utána is kiírjuk, hogy mi lett az eredmény
+ select * from intezmeny_eventus.tankorTanar where tankorId in (@old, @new);
+
+ -- Ellenőrizzük azt is, hogy azonos tárgyhoz tartozó tankörök-e
+ select targyId from intezmeny_eventus.tankor where tankorId in (@old, @new);
+
+ -- Végül töröljük az immár felesleges tankört
+ delete from intezmeny_eventus.tankor where tankorId=@new;
+
+ -- Itt még meggondolhatjuk magunkat! De ha minden ok, akkor mehet a commit...
+ COMMIT;
+
+**Megjegyzések:**
+Feltételezzük, hogy a megadott két tankörnek azonos a névsora, tehát a tankorDiak táblát nem bántjuk. Nem nyúltunk a tankorCsoport és tankorBlokk
+táblákhoz sem, ezekből egyszerűen törlődnek az új tankör adatai.
+
+
+==== Teremhozzárendelések átmásolása ====
+
+=== első hétről a második heti órarendbe ===
+
+Többhetes óraren készítésekor gyakori, hogy az órák jelentős része megegyezik a két hét órarendjében. Ilyenkor nagy segítség, ha a teremhozzárendelést az első hétre
+megcsinálva a megfelelő msodik heti órákra is ki lehet terjeszteni:
+
+ UPDATE orarendiOra AS o1 left join orarendiOra AS o2 USING (nap, ora, tanarId, osztalyJel, targyJel)
+ SET o1.teremId=o2.teremId WHERE o1.het=2 AND o2.het=1 AND o2.teremId IS NOT NULL AND (o1.teremId IS NULL OR o1.teremId!=o2.teremId);
+
+=== korábbi változatból újabb változatba ===
+
+Ha órared módosításkor új órarendet töltöttünk be (ennek érvényességi ideje példánkban 2015-01-18-ával kezdődik), és szeretnénk a két változatban egyező órák
+teremhozzárendeléseit átmenteni:
+
+ UPDATE orarendiOra AS o1 left join orarendiOra AS o2 USING (het, nap, ora, tanarId, osztalyJel, targyJel)
+ SET o1.teremId=o2.teremId WHERE o1.tolDt='2015-01-18' and o2.tolDt<=curdate() and curdate()<=o2.igDt;
+
+=== Órarendből haladási naplóba ===
+
+Órarend módosításkor előfordulhat, hogy az órák még az előtt bekerülnek a haladási naplóba (''ora'' tábla), mielőtt a teremhozzárendelések véglegesülnek, így eltérő
+teremId-k leszenk a két táblában. A felületen annyit látunk, hogy az órarend szerinti termek áthúzva jelennek meg a haladási naplóban lévőek mellett. Szeretnénk, hogy
+a haladásinapló mégis az áthúzott teremId-ket tartalmazza...
+
+Kérdezzük le az érintett órákat:
+
+ select orarendiOra.*,ora.tankorId,ora.teremId
+ from ora left join orarendiOra on het=1 and tolDt='2015-01-18' and orarendiOra.tanarId=ora.ki and dayofweek(dt)-1=nap and ora.ora=orarendiOra.ora
+ where ora.dt='2015-01-21' and ora.teremId<>orarendiOra.teremId;
+
+A példában a 2015-01-21-i órákat akarjuk javítani, ahol tudjuk, hogy 1. heti órarend van, s az érvényes órarend bejegyzései 2015-01-18-án kerültek be. A két tábla
+közt a kapcsolatot ezen kívül a tanár, a nap és az óra adja.
+
+Ha a lekérdezés eredménye alapján úgy látjuk, hogy valóban a javítandó bejegyzések jelentek meg, akkor módosítsunk:
+
+ update ora left join orarendiOra on het=1 and tolDt='2015-01-18' and orarendiOra.tanarId=ora.ki and dayofweek(dt)-1=nap and ora.ora=orarendiOra.ora
+ set ora.teremId=orarendiOra.teremId where ora.dt='2015-01-21' and ora.teremId<>orarendiOra.teremId;
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hataridok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hataridok.txt
new file mode 100644
index 00000000..15f1a080
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/hataridok.txt
@@ -0,0 +1,84 @@
+====== Határidők kezelése ======
+
+A naplóban az egyes beírási feladatokhoz (saját óra, helyettesítés, stb.) tartozó **határdiőket** a ///var/mayor/config/module-naplo/config-[iskolarovidneve].php// állomány tartalmazza.
+
+Bár technikailag szinte bármilyen határidő beállítható, az iskolai szabályozás, a józan ész és az egymással összefüggő határidők (pl. igazolások köre) miatt célszerű alaposan átgondolni, mit állítunk be.
+
+A beállításokat mindenképpen a **Vezetőség jóváhagyásával** végezzük el!
+
+Az állományokban történő módosításkor a lehető legnagyobb gondossággal járjunk el! Célszerű az eredeti beállításokat kikommentelni, mert így biztosan megmarad egy működőképes érték.
+
+
+
+
+Lássunk néhány példát!
+
+===== Kommentelés: =====
+
+
+Ez az eredeti:
+
+ define('_ZARAS_HATARIDO',date('Y-m-01 00:00:00',strtotime('50 days ago')));
+
+Ez pedig a "hatástalanított"... (minden sor elejére dupla törtjel kerül):
+
+ //define('_ZARAS_HATARIDO',date('Y-m-01 00:00:00',strtotime('50 days ago')));
+
+Ugyanazt érjük el a legelső sor elé tett /* és az utolsó sor után tett */-gal):
+
+ /*
+ define('_ZARAS_HATARIDO',date('Y-m-01 00:00:00',strtotime('50 days ago')));
+ */
+
+===== Eredeti haladási (saját óra beírás) határidő értelmezése: =====
+
+Így néz ki:
+
+ // Azaz egy óra a következő hétfői tanítási nap 16:00-ig írható be.
+ define('_HALADASI_HATARIDO',
+ date('Y-m-d H:i:s',
+ strtotime('last Monday',
+ strtotime('next day',
+ strtotime(
+ getTanitasiNapVissza(5,date('Y-m-d H:i:s',strtotime('+8hours')))
+ )
+ )
+ )
+ )
+ );
+
+És mit jelent (belülről kifelé haladva)?
+
+A mostani dátum/időhöz adjunk 8 órát! Lépjünk vissza 5 tanítási napot! Vegyük a következő (naptári) napot! Majd ugorjunk az azt megelőző hétfőre!
+
+===== Más beállítások: =====
+
+==== Visszamenőleg szeptember 1-ig engedjük a saját órák beírását ====
+
+ define('_HALADASI_HATARIDO','2015-09-01 00:00:00');
+
+==== Folyamatoasan, 10 (naptári) napig lehet a saját órákat beírni ====
+
+ define('_HALADASI_HATARIDO',date('Y-m-d H:i:s',strtotime('10 days ago')));
+
+==== Folyamatoasan, 3 tanítási napig lehet a saját órákat beírni ====
+
+ define('_HALADASI_HATARIDO',getTanitasiNapVissza(3,'curdate()'));
+
+==== A hét péntekjén 20:00-ig lehet az aktuális heti saját órákat beírni ====
+
+ define('_HALADASI_HATARIDO',
+ date('Y-m-d H:i:s',
+ strtotime('monday this week',
+ strtotime('+28hours'))));
+
+==== A hét péntekjén 24:00-ig lehet az aktuális és az előző heti saját órákat beírni ====
+
+ define('_HALADASI_HATARIDO',
+ date('Y-m-d H:i:s',
+ strtotime('monday last week',
+ strtotime('+24hours'))));
+
+Az adott vagy az előző hétre történő számolásnál vegyük figyelembe, hogy az angolszász módi szerint a hét vasárnappal kezdődik... :-)
+
+**Figyelem**! Mindenki csak a saját felelősségére módosítson! Adatvesztést ugyan egyik sem okozhat, de sok kellemetlen konfliktus kiindulópontja lehet egy rosszul kivitelezett módosítás!
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jelszoemlekezteto.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jelszoemlekezteto.txt
new file mode 100644
index 00000000..7823f11f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jelszoemlekezteto.txt
@@ -0,0 +1,65 @@
+====== Szülői jelszócsere email-ben ======
+2016. nyarán új funkcióként megjelent az szülői elfelejtett / lejárt jelszavak önálló cserejének lehetősége.
+
+Az egész beállítást célszerű kevésbé terhelt időszakban (késő este, hétvége, piros betűs ünnep) elvégezni... :-)
+
+==== Előzetes tevékenységek ====
+ - Ellenőriz(tess)ük a szülői email-címek meglétét!
+ - Ha kell, aktualizáljuk! (Jelenleg (2016. szept.; rev3988)) a diák adatlapján, a szülői részben felvett/átírt email-cím NEM frissül a felhasználói adatoknál! Tehát változtatás esetén 2 helyen kell módosítani: Intézményi adatok/Diákok és Felhasználók/Felhasználó keresése-parent...)
+ - A régi, hagyományos (email-telen) jelszócsere lehetőségét hagyjuk meg, biztos lesz olyan szülő, aki nem használ email-t!
+ - Járjunk utána, hogy milyen módon lehet a kimenő leveleket ténylegesen kiküldeni (melyik szerverünk alkalmas erre, portnyitások a Közhálón, stb.)
+
+==== Hagyományos jelszócsere ====
+Mivel a szülőkkel ritkán van személyes kapcsolattartás, célszerű a jelszócsere-igényre egy nyomtatványt készíteni, pl. [[http://www.szag.hu/szuloijelszo.php|ilyet]]...
+
+==== Jelszóemlékeztető kérés lehetőségének beállítása ====
+A ///var/mayor/config/parent-conf.php// állományban engedélyezzük ezt a lehetőséget!
+ 'enablePasswordReset' => true,
+Ezzel a publikus kezdőlapon, a **Bejelentkezés**-re kattintva aktivizálódik a kék színű **Jelszóemlékeztető** gomb.
+
+A szülőknek lehetőségük van __email-cím__ vagy __felhasználói azonosító__ alapján kérni a cserét.
+
+==== Levélküldés beállítása ====
+
+Jelenleg a MaYoR csak úgy tud küldeni levelet, ha a szerveren levő smtp szerver tud levelet küldeni. Közvetlenül nem kapcsolódik külső smtp szerverhez a php kliens, ezt inkább más programokra bízza, pl. postfix. Ezért a MaYoR-t futtató gépen telepíteni kell a postfix (levélküldő) csomagot, minden rendes tárolóban fenn van.
+
+**FIGYELEM! SuliXerver alatt futó naplónál ezt a lépést KI KELL HAGYNI! Ugorj az [[hogyan:jelszoemlekezteto#egyeb_beallitasok|Egyéb beállítások]]ra!**
+ # apt-get install postfix
+vagy
+ $ sudo apt-get install postfix
+És innen kérdéses a dolog, mert ahány ház, annyi szokás... Melyik szerver küldi a levelet, milyen hozzáféréssel, melyik porton, stb... Az alábbiakat csak a helyi viszonyok pontos ismeretében lehet folytatni!
+Célszerű a tényleges levélküldést másik szerverre bízni, így egy rakás beállítástól megmenekülünk és az a veszély sem fenyeget, hogy a csak kifele levelező MaYoR-t spam-szervernek minősítik... :-o
+
+**Egyik mód: (MaYoR külön szerveren, mellette komplett funkcionalitású SuliXerver)**
+
+Meg kell adni, hogy a MaYoR ténylegesen kivel küldje el a levelet.
+
+A postfix beállításait a ///etc/postfix/main.cf// állomáynban szerkeszthetjük, de óvatosan...!
+
+Itt kell megadni a levéltovábbító szerver IP-jét, nálam ez a 172.16.0.3 lett. (Meghagytam jó szokás szerint az eredtei sort is, kommentezve...)
+ # relayhost =
+ relayhost = 172.16.0.3
+A változtatások után a postfix-et újra kell indítani:
+ # service postfix restart
+
+Azon a bizonyos szerveren, ami továbbítja a MaYoR által küldött levelet, be kell állítani, hogy a MaYoR-tól fogadja el a levéltovábbítást. Nálam SuliXerver fut, vele kell ezt megértetni.
+
+**Másik mód: nincs levelezőszerver, gmail-es címet használunk**
+
+Először is létre kell hozni egy értelmes nevű, biztonságos jelszóval ellátott gmail-postafiókot.
+
+Majd rá kell venni a napló postfix-jét, hogy ezen postafiókkal küldje a leveleket az érintetteknek. Ehhez szükség van a napló irányában a szolgáltatónál (pl. NIIF/KIFÜ/Közháló/SuliNet - ki hogy ismeri) az **587**-es TCP-portot kinyit(tat)ni.
+
+Még nincs kész, folyt.köv.
+
+==== Egyéb beállítások ====
+
+A /var/mayor/config/main-config.php végére még be kell szúrnunk ezt a két sort, értelemszerűen átírva:
+ define('__SUPPORT_EMAIL_ADDRESS','support@iskola.hu');
+ define('__SUPPORT_EMAIL_NAME',_SITE.' Support');
+
+Ha egy családon belül több hozzátartozó is ugyanazt az email-címet adta meg, értelemszerűen az első kapja meg a levelet.
+
+Hívjuk fel a szülők figyelmét, hogy a levelek gyakran a SPAM mappában landolnak, azt is ellenőrizzék!
+
+Még nincs kész, folyt.köv. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jogviszony.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jogviszony.txt
new file mode 100644
index 00000000..d91ba340
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/jogviszony.txt
@@ -0,0 +1,49 @@
+
+====== Diákok jogviszonya ======
+
+Az alábbiakban összefoglaljuk a diákok jogviszony-kezelésének föbb tudnivalóit
+
+===== Jogviszony állapok áttekintése =====
+
+==== Felvételt nyert ====
+
+Ez az állapot valójában a jogviszonyba lépés előtti állapotot jelenti. Azért vezettük be, hogy lehetőség legyen a felvett diákok adatainak betöltésére már a beiratkozás előtt.
+Ez az állapot a beiratkozáskor "jogviszonyban van" állapotra változik - más jogviszonyváltásra ebből az állapotból nincs lehetőség.
+
+A "felvételt nyert" státuszú diákot besorolhatjuk oszályokba, de nem lehet tagja tanköröknek, nem vehet részt a tanulmányokban, így nem lehet se hiányzása, se jegye, stb.
+
+==== Jogviszonyban van ====
+
+Ez a státusz jelöli a normál tanulói jogviszonyt. A jogviszony a beiratkozással veszi kezdetét, átválthat magántanulói jogviszonyra (magántanuló), időszakosan szünetelhet
+(jogviszonya felfüggesztve), illetve lezárulhat.
+
+A jogviszonyban lévő tanulót osztályokba, tankörökbe soroljuk, munkáját értékeljük, hiányzásait adminisztráljuk, stb
+
+==== Magántanuló ====
+
+A már beiratkozott diák tanulmányait magántanulóként is folytathatja. A magántanuló tanulmányait önállóan végzi, egyénileg készül fel, az intézmény feladata a tanuló
+értékelése. Magántanulói státuszból a tanuló visszakerülhet normál jogviszonyba, kérheti jogviszonyának felfüggesztését, illetve jogviszonya le is zárulhat
+(pl. ha tanulmányait elvégezte, vagy más intézményban folytatja).
+
+A magántanuló tagja lehet valamely osztálynak, de nem tagja egyik tankörnek sem, nem kap évközi érdemjegyeket, a tanórai foglalkozásokon nem vesz részt, félévi és év végi
+osztályzatait osztályozóvizsgán szerti meg.
+
+==== Jogviszonya felfüggesztve ====
+
+Ez az állapot azt jelenti, hogy a tanuló időszakosan megszakítja tanulmányait, semmiéyen módon nem vesz részt a tanításban, értékelésben. A felfüggesztett jogviszonyból
+a tanuló visszatérhet normál tanulói jogviszonyba, magántanulói jogviszonyba, de akár le is zárulhat jogviszonya.
+
+A felfüggesztett jogviszonyú tanuló nem tagja se osztálynak, se tankörnek, újbóli jogviszonybalépéséig csak adatait tároljuk.
+
+==== Jogviszonya lezárva ====
+
+Ezt a státuszt használjuk, ha a diák jogviszonya véglegesen lezárult - a tanulmányok végeztével, más iskolába való átvétel esetén, tankötelezettség lejártával, ha
+tanulmányait nem kívánja folytatni, stb. Szükség esetén - újabb beiratkozással - lezárt jogviszonyból új jogviszony nyitható.
+
+A lezárt jogviszonyú tanuló nem tartozik se osztályba, se tankörbe, nem vesz részt a tanításban, értékelést sem kap, stb...
+
+==== Vendégtanuló ====
+
+A vendégtanuló sajátos tanulói jogviszony, mely akkor létesül, ha a tanuló nem az intézményben folytatott valamely képzés egészében vesz részt, csak egyes tárgyak tanulására
+szorítkozik. A vendégtanuló nem tagja egyik osztálynak sem, de tanulmányait valamely tankörökben végzi, ezekben évközi értékelést is kap. A vendégtanulói jogviszony csak
+lezárulhat, más státuszba nem váltható.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/karbantartas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/karbantartas.txt
new file mode 100644
index 00000000..df62a463
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/karbantartas.txt
@@ -0,0 +1,78 @@
+====== Karbantartás ======
+
+A karbantartás főbb lépéseit próbáljuk itt összeszedni.
+
+===== A karbantartási feladatok előkészítése =====
+
+A MaYoR rendszer két fő karbantartási feladatát (mentés és frissítés) egy egyszerű szkript segítségével végezhetjük. Ez a szkript a ''/var/mayor/bin/mayor'' elérési
+úttal rendelkezik. Érdemes erre a parancsállományra szimbolikus linket készíteni egy olyan könyvtárból, ami benne van a rendszergazda keresési útvonalainak
+listájában (tipikusan erre való az ''/usr/local/sbin/''), illetve futtatási jogot kell rá adnunk - ha még nem lenne (a telepítő normál esetben ezt megteszi):
+
+ # chmod +x /var/mayor/bin/mayor
+ # ln -s /var/mayor/bin/mayor /usr/local/sbin/
+
+A telepítés tartalmaz egy egyszerű cron szkriptet is (''/var/mayor/bin/etc/cron.daily/mayor''). Ezt testreszabhatjuk és átmásolhatjuk az ''/etc/cron.daily'' kövtárba,
+vagy készíthetünk rá szimbolikus linket is, ha az alapbeállítások megfelelnek nekünk (napi mentés és heti frissítés).
+
+A karbantartó script bash (GNU Bourne-Again SHell) - ben íródott és fixen a ''/bin/bash'' útvonalon keresi a futtató programot. Amennyiben más (locate bash) elérési
+úton található rendszerünk bash programja:
+
+ # ln -s [ahol valójában van] /bin/bash
+
+===== Mentés =====
+
+Az egyik legfontosabb dolog a rendszeres, lehetőleg napi mentés biztosítása. Valódi biztonságot csak ez adhat. Akár program hibából, akár egy meggondolatlan kattintás
+következményeként, vagy egy rosszul kiadott SQL utasítás nyomán elveszhetnek, sérülhetnek adatok, az illetéktelen hozzáférés veszélyéről nem is beszélve. A napi mentés
+ilyen esetben rengeteg munkától és kellemetlenségtől kímélhet meg minket.
+
+A mentés elvégzésére a rendszer biztosít megfelelő szkriptet, de ennek használata csak megfelelő kitöltött konfigurációs állomány esetén működhet.
+A beállításokat a ''/var/mayor/config/main.conf'' állományba kell beírnunk, mintát találunk ugyanitt ''main.conf.example'' néven.
+
+A ''SAVELDAP'' opció a legtöbb telepítés esetén 0 értékű és az utána következő három bejegyzés így nem lesz figyelembe véve, hiszen a legtöbb helyen MySQL
+háttéradatbázist használunk.
+
+A mentés ezek után parancssorból indítható:
+
+ # mayor backup
+
+Természetesen, abban az esetben, ha a fent említett cron szkriptet bemásoltuk a megfelelő helyre, akkor ez a parancs minden reggel automatikusan le fog futni -
+ilyenkor nem, vagy csak speciális esetekben kell külön futtatni.
+
+===== Frissítés =====
+
+A frissítéshez szintén ugyanez a konfigurációs állomány tartozik: ''/var/mayor/config/main.conf''.
+
+Fontos, hogy az update folyamat hozzáférjen az adatbázisokhoz - hiszen esetenként ezeket is módosíthatja.
+A MODULES paraméterben adjuk meg, hogy mely modulokat szeretnénk frissíteni.
+
+Az update folyamat HTTP alapú (a wget programot használja).
+
+A ''parentDeny'' illetve ''publicDeny'' változók szorulnak magyarázatra. A legtöbb funkciót megvalósító oldal a private hozzáférési szinten van definiálva. Ha ezekre
+a public vagy parent szinten hivatkozunk, az update folyamat linkeket hoz létre. Ha az alapértelmezetten linkelt oldalakat le akarjuk tiltani valamelyik
+hozzáférési szinten, akkor ehhez az oldalt a rövid elérési útjával be kell írnunk pl a ''publicDeny'' változóba. Így
+
+ # publicDeny="naplo/tanev/orarend"
+
+(( Figyelem! A régebbi verziókban (1943-ig) használt ''parentSymlink'' és ''publicSymlink'' változókat a továbbiakban nem használjuk!))
+
+A frissítő szkriptnek valahonnan tudnia kell, hogy mi a program jelenlegi verzió-száma, hogy el tudja dönteni, szükség van-e frissítésre, és ha igen,
+akkor mely módosítások elvégzését jelenti a frissítés. A program aktuális verziószámát a ''/var/mayor/log/revision'' fájl tartalmazza. Ha ez az állomány valamiért
+hiányzik, megsérül, hibás adatot tartalmaz, akkor hozzuk létre és javítsuk ki a megfelelő revision beírásával.
+
+A frissítés ezek után parancssorból történhet:
+
+ # mayor update
+
+Feltéve, hogy korábban valamilyen módon elértük, hogy a /var/mayor/bin/mayor script futtatható legyen és benne legyen a PATH-ba. Például:
+
+ # ln -s /var/mayor/bin/mayor /usr/local/sbin
+ # chmod +x /var/mayor/bin/mayor
+
+===== A beállítások felügyelete =====
+
+A MaYoR rendszer összes beállítása a ''/var/mayor/config'' könyvtár alatt végezhető, beleértve a [[hogyan:menu_testreszabas|menük testreszabását]] az egyes skin-ek
+apróbb beállításait, a modulok konfigurációját és az egyes hozzáférési szintek beállításait. A konfigurációs állományokhoz mindig találunk ''.example'' kiterjesztésű
+mintát. Mivel a konfigurációs lehetőségek időnként változnak, ezért érdemes időszakonként átnézni őket, hogy lássuk, nincs-e szükség saját állományaink szerkesztésére.
+
+A ''/var/mayor/log/'' könyvtárban található az aktuális revision file valamint az update process logjai.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kepesitesek.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kepesitesek.txt
new file mode 100644
index 00000000..cc50ab38
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kepesitesek.txt
@@ -0,0 +1,75 @@
+====== Képesítések adminisztrációja ======
+
+A képesítések tárolása elsősorban a tantárgyfelosztás elkészítése miatt szükséges, itt is alapvetően azért csak, mert a jogszabály
+szerint a tanárok képesítésének is szerepelnie kell a tantárgyfelosztásban. A képesítések felvételének további haszna lehet a tanárok
+tantűrgyakhoz való hozzárendelésének új lehetősége, ami a naplóban eddig ezt a célt szolgáló munkaközösségeket válthatja ki.
+
+===== A képesítésekről nyilvántartott adatok =====
+
+A képesítések rendszere meglehetősen szerteágazó, ennek következtében többféle jellemzőt kell velük kapcsolatban nyilvántartanunk.
+
+==== Végzettség, fokozat ====
+
+Bizonyos képzések jellemzője, hogy végzettséget adnak. A végzettségek rendszere három fokozatot és további fokozatokat tartalmaz.
+
+ - **alapfokú végzettség** szerezhető az általános iskola nyolc osztályának elvégzésével, vagy a 20 hónapos köznevelési Híd II. program befejeztével
+ - **középfokú végzettség** szakközépiskolában, vagy gimnáziumban lettett sikeres érettségivel nyerhető
+ - **felsőfokú végzettség** szerezhető felsőoktatási intézményekben többnyire a képzést lezárő államvizsga letételével.
+
+Fontos, hogy nem minden képzés ad végzettséget. Például a felsőfokú szakképzés csak szakképesítést, a szakirányú továbbképzések csak szakképzettséget, végzettséget
+nem adnak. Külön kategória a középfokú szakképzés szakmai végzettsége is - tehát a fenti értelemben ez sem ad középfokú végzettséget, csak szakképesítést.
+
+
+A felsőfokú végzettségek további három fokozatba sorolhatok:
+
+ - **alapfokozat** - szokásos jelölése BA, illetve BSc, mely az egyetemi/főiskolai alapképzés keretében szerezhető meg.
+ - **mesterfokozat** - szokásos jelölése MA, illetve MSc, mely az egyetemi/főiskolai alapképzést követő mesterképzésen, vagy az osztatlan mesterképzésen szerezhető meg.
+ - **tudományos fokozat** - szokásos jelölése PhD, illetve DLA, mely a mesterfokozat megszerzése után a doktori képzésben szerezhető meg.
+
+A bolognai rendszer bevezetése előtti felsőfokú végzettségeket az alapján különböztetjük meg, hogy egyetemen, vagy főiskolán szerezték őket. A legtöbb esetben a korbbi
+főiskolai végzettséget megfeleltetik a mai alapfokozatnak, míg az egyetemi végzettséget a mai mesterfokozatnak. Emiatt célszerűnek tűnt a programban a főiskolai/egyetemi
+jelzőket is a fokozatok körébe sorolni:
+
+ - **főiskolai** fokozat jelöli a bolognai renszer bevezetése előtti főiskolai felsőfokú végzettséget
+ - **egyetemi** fokozat jelöli a bolognai rendszer bevezetése előtti egyetemi felsőfokú végzettséget
+
+==== Specializáció: szakképesítés, szakképzettség ====
+
+Az oktatási jogszabályok megkülönböztetik a végzettség és a szakképzettség, valamint szakképesítés fogalmát. A végzettség egy általános szint, fokozat jelölésére
+szolgál, önmagában nem jelent semmifajta specializációt - azt a szakképzettség adja meg.
+
+ - **szakképzettség** a felsőfokú végzettséggel együtt, vagy felsőfokú végzettség bitokában szakirányú továbbképzéssel szerezhető.
+
+A szakképzés egyes szintjein szakképesítés szerezhető. A szakképesítések rendszere igen szerteágazó, több fokú, alap, ráépített és rész szakképesítéseket is tartalmaz.
+Az Országos Képzési Jegyzékben szereplő szakképesítés szintjét az OKJ azonosító első két számjegye mutatja.
+
+A programban egy egyszerűsített modellt használunk:
+
+ - **alapfokú szakképesítés** - befejezett iskolai végzettséget nem igénylő, speciális szakiskolai képzésben, Híd II. program keretében, vagy iskolarendszeren kívül megszerezhető szakképesítések. OKJ számuk 2-vel kezdődik.
+ - **középfokú szakképesítés** - alapfokú végzettséghez, esetenként középfokú végzettséghez kötött szakképesítések. OKJ számuk 3, 52, vagy 53 kezdetű.
+ - **emelt szintű szakképesítés** - érettségi végzettséghez kötött, elsősorban iskolai rendszerű szakképzésben szerezhető szakképesítés. OKJ száma 54-gyel kezdődik.
+ - **felsőfokú szakképesítés** a felsőoktatásban szerzett szakképesítés. 55-tel, 6-tal, vagy 7-tel kezdődő OKJ számmal rendelkeznek.
+
+(De lehet, hogy egyszerűen a kezdő 2-es jelenti az alapfokú, 3-as a középfokú, 5-ös az emelt szintű, 6-os a felsőfokú szakképesítést adő képzéseket.)
+
+==== Képesítés neve ====
+
+A jellemzők mellett természetesen meg kell adnunk a képesítés hivatalos nevét is, felsőfokú égzettség esetén például a diplomán szereplő megnevezést.
+
+===== Példák =====
+
+^ vegzettesg ^ fokozat ^ specializacio ^ kepesitesNev ^
+| alapfokú | | | általános iskola |
+| középfokú | | | érettségi |
+| | | alapfokú szakképesítés | Lakás-textil készítő |
+| | | középfokú szakképesítés | Számítógép-szerelő, karbantartó |
+| | | emelt szintű szakképesítés | Pénzügyi-számviteli ügyintéző |
+| | | felsőfokú szakképesítés | Rendszerinformatikus |
+| felsőfokú | főiskolai | szakképzettség | tanító |
+| felsőfokú | egyetemi | szakképzettség | matematika szakos középiskolai tanár |
+| felsőfokú | alapfokozat | szakképzettség | |
+| felsőfokú | mesterfokozat | szakképzettség | földrajz szakos középiskolai tanár |
+| felsőfokú | tudományos fokozat | szakképzettség | |
+| | | szakképzettség | közoktatási vezető és pedagógus szakvizsga szakirányú továbbképzés |
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kozossegi_szolgalat.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kozossegi_szolgalat.txt
new file mode 100644
index 00000000..4de9aea4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/kozossegi_szolgalat.txt
@@ -0,0 +1,35 @@
+
+====== Közösségi szolgálat adminisztrálása ======
+
+===== Jogi háttér =====
+
+**20/2012 EMMI**
+
+1. § Az iskola által használt nyomtatvány
+w) a közösségi szolgálati jelentkezési lap,
+
+2. § (3) Az egyéni törzslap tartalmazza
+g) a közösségi szolgálat teljesítésével kapcsolatos adatokat,
+
+101. § (6) Az értékelő naplórész
+ ...
+d) a közösségi szolgálat teljesítésével kapcsolatos adatokat
+tartalmazza.
+
+===== Megvalósítás =====
+
+A 101. § d) pont könyvelését a tárgy/tankör struktúrában oldottuk meg (rev >= 2972).
+(A köszi-vel való összehangolás egyelőre függőben van).
+
+ * új munkaközösséget kell felvenni, majd beállítani a megfelelő új követelmény típust
+ * tárgy neve: tetszőleges (pl. szociális gyakorlat)
+ * tárgy jellege: közösségi szolgálat
+ * záró követelmény: teljesített óra
+{{http://content.screencast.com/users/konczy/folders/Jing/media/46e0d0bb-42ef-4af4-b07c-51f3cb1b7b8d/00000486.png?600}}
+ * új tankört kell felvenni a következő szerint:
+ * Tankörtípus: közösségi szolgálat
+ * Évközi követelmény: teljesített óra (opcionális - év közben nem szükséges folymatosan jegyezni a rész óraszámokat...)
+{{http://content.screencast.com/users/konczy/folders/Jing/media/c94d1803-3d7c-4fa7-bfcc-86b69d359f96/00000487.png?600}}
+ * célszerű a tárgysorrendet úgy állítani, hogy a "közösségi szolgálat" típusú tárgyak a nyomtatványok sorrendjében a végén legyenek. (opcionális)
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/mayor_szkript.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/mayor_szkript.txt
new file mode 100644
index 00000000..a5e3918d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/mayor_szkript.txt
@@ -0,0 +1,40 @@
+====== mayor update ======
+
+A frissítésért felelős.
+
+Alapbeállításként minden vasárnap hajnalban fut le, a (Debian rendszeren) /var/mayor/config/main.conf állományban a HTTP_SERVER-ként megadott helyről tölti le (és telepíti) a frissítéseket.
+
+A frissítés idejére lock-olja a naplót, a beléptetett felhasználókat "kidobja".
+
+Futtatható kézzel is, root joggal.
+
+ # mayor update
+
+Sikertelen frissítés esetén:
+ * a /var/mayor/config/main.conf fájlban megadott HTTP_SERVER nem elérhető;
+ * a /etc/resolv.conf-ban helytelen a DNS-megadás, emiatt nem megy a névfeloldás;
+ * a /etc/network/interfaces-ben a dns-nameservers-ben beállított értékek rosszak / szerverek elérhetetlenek.
+
+Félbeszakadt frissítés esetén hiba jelenik meg a napló webes felületén, ilyenkor a /var/run/mayor_lock állományt kell tötölni.
+
+====== mayor backup ======
+
+A mentésért felelős.
+
+Alapbeállításként minden nap hajnalban fut le, a (Debian rendszeren) /var/mayor/config/main.conf állományban a BACKUPDIR-ként megadott helyre tömörítve (tar.gz) menti az adatbázisokat, konfigurációs beállításokat.
+
+Célszerű a fenti állományban a "Backup paraméterek" részben a DATE elől kiszedni a kommentet, így a keletkező backupfile kiegészül az aktuális dátummal (2013.03.27 06:25):
+
+ 201303270625.tgz
+
+Futtatható kézzel is, root joggal.
+
+ # mayor backup
+
+**Erősen javallott, hogy sql használata előtt feltétlen készítsünk mentést!**
+
+====== mayor restore ======
+
+Megfelelően paraméterezve a backupfile-ból visszaállítja a teljes adatbázist és a konfigurációs állományokat.
+
+Folyt. köv. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/menu_testreszabas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/menu_testreszabas.txt
new file mode 100644
index 00000000..5b6f1690
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/menu_testreszabas.txt
@@ -0,0 +1,25 @@
+====== A menü testreszabása ======
+
+A menü testreszabása a ''/var/mayor/config/menu'' könyvtár alatt történhet. Itt hozzáférési szintenként, azon belül nyelvenként módosíthatjuk a menü tartalmát.
+
+Ha például a magyar nyelvű publikus oldalak menürendszerét akarjuk állítani, akkor ezt a ''/var/mayor/config/menu/public/menu-hu_HU.php'' állomány létrehozásával és szerkesztésével tehetjük meg. A módosításhoz ismernünk kel a [[base:menue#a_menue_felepitese|menürendszert tároló adatszerkezetet]].
+
+A ''public'' könyvtárban egy egyszerű minta állományt találunk (''menu-hu_HU.php.example''). Ebben megtalálható, hogy hogyan kell egy-két menüpontot kiszedni a menüből, illetve külső hivatkozást új menüpontként hozzáadni.
+
+Több olyan menüpont is van amelyek megtekintéséhez bizonyos felhasználóknak joga van, de nem tudják megtenni, (alapértelmezettként) nem jelenik meg nekik a menüpont.
+
+A teljes menü felépítését a ''/var/mayor/www/include/menu/'' könyvtárban lévő könyvtárszerkezetben lehet fellelni. (pl. a magyar nyelvű szülőknek szóló menü: ''/var/mayor/www/include/menu/parent/hu_HU/*'' könyvtár) Innen kell kipuskázni a nekünk szükséges menüket.
+
+Példa: - a diákoknak szeretnénk megjeleníteni a "Felhasználói adatok" menüben három almenüt: "Felhasználó keresése", "Adataim", "Jelszóváltoztatás". A "Felhasználó keresése", és a "Jelszóváltoztatás" menük eleve ott vannak, az "Adataim" menü pedig a diáknak sehol sem jelenik meg. Ekkor a fent említett ''menu-hu_HU.php'' állományba a következő sorokat kell beírnunk:
+
+ if (__DIAK){
+ $MENU['modules']['session'] = array(
+ 'searchAccount' => array(array('txt' => 'Felhasználó keresése','url' => 'index.php?page=session&sub=search&f=searchAccount')),
+ 'diak' => array(array('txt' => 'Adataim', 'url' => 'index.php?page=naplo&sub=intezmeny&f=diak')),
+ 'changeMyPassword' => array(array('txt' => 'Jelszóváltoztatás','url' => 'index.php?page=password&sub=&f=changeMyPassword&userAccount='._USERACCOUNT.'&policy=public&toPolicy=private','get' => array('skin','lang','sessionID'))),
+ )
+ }
+
+Ha egy meglévő menüben szeretnénk új almenüket megjeleníteni/létrehozni, a régiek megtartása mellett, akkor nem csak az új sort kell hozzáadnunk a menühöz, a meglévőket is át kell másolnunk. (ezért van a fenti példában a ''searchAccount'' és a ''changeMyPassword'' kezdetű sor) Ha csak a ''diak'' kezdetű sort tettük volna bele, akkor a "Felhasználói adatok" menünek csak egyetlen almenüje lenne.
+
+Apró szépséghiba, hogy ha a diák az "Adataim" menüre kattint akkor ezek megjelenése után a Napló menüben találja magát. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarend.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarend.txt
new file mode 100644
index 00000000..4f780f0c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarend.txt
@@ -0,0 +1,97 @@
+
+====== Az órarend ======
+
+===== Koncepció =====
+
+Az órarend alapvetően két táblát jelent a tanév adatbázisban: ''orarendiOra'' és ''orarendiOraTankor''.
+
+Az előbbi tartalmazza tulajdonképpen a lényeget, azt, hogy kinek mikor, kivel, hol van órája.
+De annak érdekében, hogy a rendszer kellőképpen rugalmas legyen külön táblában rögzítjük, hogy melyik óra melyik tankörhöz tartozik.
+
+Ez a szerkezet lehetővé teszi például azt, hogy az órarendet betöltsük úgy, hogy a tankörök listája még nem teljes. Majd az órarendi
+bejegyzések tankörökhöz való hozzárendelése során derül ki az, hogy esetleg hiányzik egy-két tankör - amit felvéve rendeződik minden.
+
+Praktikus lehet olyan esetben is ez a szerkezet, amikor az órarend készítése során egy tankör óráit különböző jelölésekkel látjuk el.
+Például a RoPaSoft órarend késtítő programban is kellett ilyen trükköket használni, ha adott esetben egy 5 órás matematika órái úgy álltak elő, hogy 3 órát egy
+fakultációs sávból vettünk, a másik kettőt meg külön.
+
+
+===== Az adattáblák =====
+
+A mese után akkor a táblák:
+
+==== orarendiOra ====
+
+ orarendiOra(het, nap, ora, tanarId, osztalyJel, targyJel, teremId, tolDt, igDt)
+
+Egy rekord egy órarendi órának az adatait tartalmazza. A hét mező akkor érdekes, ha több hetes az órarend, mondjuk van A-hét és B-hét. A
+táblában persze nem A és B, hanem egy sorszám, 1 és 2 fogja ilyenkor jelölni, hogy a bejegyzés melyik héthez tartozik.
+Egyhetes órarend esetén a ''het'' mező értéke konstans 1 lesz.
+
+A ''nap'' a hét napját jelöli: hétfő 1, ..., péntek 5, esetleg szombat 6.
+
+Az ''ora'' azt hiszem nem igényel magyarázatot - az adott napon hanyadik tanítási óra.
+
+A ''tanarId'' a tanár azonosítója a MaYoR rendszerben. Ez a szám sok helyen megjelenik a tanár neve mellett zárójelek között a felületen, illetve
+kiolvasható az intézményi adatbázis ''tanar'' táblájából. Akármilyen formában töltjük be az adatokat, mindenképp szükséges, hogy ezt az
+azonosító számot betöltés közben, vagy betöltés előtt kiderítsük, hisz a mező értéke csak létező szonosító lehet (külső kulcs a ''tanar'' tábla megfelelő mezőjére).
+
+''osztalyJel'' és ''targyJel'':
+Ezek a mezők lényegében kötetlen tartalmúak. Az adott órarendkészítő program sajátosságai szerint tölthetők ki, bár szerencsés, ha a
+tartalmukból könnyen lehet következtetni a jelölt tanulócsoportra. Ami fontos velük kapcsolatban: a (''tanarId'', ''osztalyJel'', ''targyJel'')
+hármas lesz az a kulcs, amihez egy-egy tankört hozzá lehet rendelni. Ez akkor lehet esetleg gond, ha egy tanár ugyanabban az osztályban két
+csoportra bontva tanít egy tárgyat, mert ilyenkor figyelni kell, hogy a jelölésben valahogy megkülönböztessük a két csoportot. Pl a
+''targyJel''-hez egy sorszámot illesztünk: ''mt1'', ''mt2''.
+
+Az nem okoz gondot, ha egy tankör óráit többféle jelöléssel is illetjük. Például a fakultációs sáv órái ''mtFakt'', az alapóra ''mt'' jelölést kap.
+Két különböző (''tanarId'', ''osztalyJel'', ''targyJel'') hármashoz rendelhetjük ugyanazt a tankört.
+
+''teremId'': értelemszerűen a terem azonosítója a MaYoR rendszeren belül - kiolvasható az intézményi adatbázis terem táblájából. Ha nem akarunk
+termet megadni, akkor ''NULL'' értékkel kell felvenni... (külső kulcs - csak létező id, vagy null lehet)
+
+''tolDt''-''igDt''.
+Az órarend a tanév során változhat, változik. Ezért az egyes órarendi bejegyzések érvényességét kell tudnunk szabályozni. Erre szolgál ez a
+két dátum. Ha például egy bejegyzés csak az első félében érvényes, akkor 2009-09-01-es ''tolDt''-t és 2010-01-19-es ''igDt'' kap
+
+Órarendváltoztatáskor tehát a korábbi bejegyzéseket nem töröljük, csak az érvényeségüket "zárjuk le", majd felvesszük az új bejegyzéseket.
+A gyakorlatban általában az órarendet kezdetben egész évre szoktuk betölteni, és év közben mikor szükséges, akkor módosítjuk.
+
+==== orarendiOraTankor ====
+
+A másik tábla az ''orarendiOra'' rekordjaihoz rendeli hozzá a tanköröket a már emlegetett (''tanarId'', ''osztalyJel'', ''targyJel'') hármas alapján. A tábla
+mezői ennek megfelelően:
+
+ orarendiOraTankor(tanarId, osztalyJel, targyJel, tankorId)
+
+Ahol a ''tankorId'' a tankör azonosítója a MaYoR rendszeren belül, a legtöbb helyen a tankör neve után zárójelben fel is tüntetjük, de
+kiolvasható az intézményi adatbázis tankor táblájából is. Pontosabban a ''tankorSzemeszter'' táblából - mert itt tárolódnak a tankörök nevei -
+amik ugye évente változnak az évfolyam jelölés miatt...
+
+Ezt a táblát nem kell feltölteni. Ennek a kitöltését a felületen az [[naplo:orarend:orarendTankor|Órarend/Órarend-tankör összerendező]] menüpontban lehet elvégezni -
+tanáronként.
+
+
+===== Órarendbetöltés =====
+
+==== CSV (TSV) állományból ====
+
+Az "Admin/Import" menüpont alatt közvetlenül tudunk adatokat betölteni az ''orarendiOra'' táblába.
+
+Néhány sor egy fiktív csv-ből (ami igaziból inkább tsv, mert tabulátorokkal tagolt szöveges állomány....)
+
+ 1 1 1 12 8.a mt1 201 2009-09-01 2010-06-20
+ 1 1 2 12 11.b fiz 225 2009-09-01 2010-06-20
+ 1 1 5 12 8.a mt2 201 2009-09-01 2010-06-20
+ 1 1 6 12 12.c mtFakt 131 2009-09-01 2010-06-20
+ 1 1 7 12 12.c mtFakt 131 2009-09-01 2010-06-20
+
+A fenti pár sor a 12-es id-jű tanár első heti hétfői óráit írja le. Látszik, hogy a 8.a-ban két csoportban tanít matematikát, 11.b-ben
+fizikát és 12.c-ben egy duplaórás matematika fakultációt.
+
+==== Óra felvétel a felületen ====
+
+Ha csak kevés órát kell felvennünk, akkor a legjobb megoldás az "Órarend/Órarend módosítás" menüpont használata. Itt lehetőség van új órák felvételére és korábbi bejegyzések lezárására is. Ezt a lehetőséget használva a bejegyzések rögtön tankörhöz rendelődnek és a program ellenőrzi az esetleges ütközéseket is (egy diáknak egy időben ne legyen több kötelező órája).
+
+==== Órarend betöltő ====
+
+A programnak van egy külön órarend-betöltő menüpontja (Órarend/Órarend betöltés). Itt különböző szöveges (CSV, TSV, XML) formátumokból lehet órarendi bejegyzéseket felvenni, szükség esetén a korább bejegyzések lezárásával. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarendi_hetek_atallitasa.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarendi_hetek_atallitasa.txt
new file mode 100644
index 00000000..6552c8de
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/orarendi_hetek_atallitasa.txt
@@ -0,0 +1,10 @@
+====== Hogyan állítsuk át az órarendi heteket ======
+
+Előfordul, hogy az év elején beállított órarendi hetek sorát egy adott dátumtól kezdve át kell állítani. Ezt a felületen elvégezhetjük, havi bontásban, minden nap órarendi hetének átállításával, de ez esetenként lehet túl fárasztó, hoszadalmas. Ilyenkor jöhet jól, ha közvetlenül SQL utasításokkal át tudjuk állítani az órarendi heteket
+
+Pl:
+Ha szeretnént 2008 január elsejétől a kéthetes órarendben az órarendi heteket megcserélni, akkor az adott tanév adatbázisában adjuk ki a következő parancsot:
+
+ UPDATE nap SET orarendiHet=IF(orarendiHet=0, 0, (orarendiHet MOD 2)+1) WHERE dt>'2008-01-01';
+
+És kész is vagyunk! \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/osztaly_heti_idokeret.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/osztaly_heti_idokeret.txt
new file mode 100644
index 00000000..161810ab
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/osztaly_heti_idokeret.txt
@@ -0,0 +1,53 @@
+
+====== Osztály heti időkeretének számítása ======
+
+A tantárgyfelosztás egyik fontos eleme, hogy tisztában legyünk azzal, mekkora időkerettel, óratömeggel dolgozhatunk.
+A tantárgyfelosztás statsztikai oldala éppen ezért erről is ad információt. Fontos azonban tudnunk, hogy hogyan és mi alapján számol a program.
+
+A legfontosabb jogforrás ezen a téren a NKT. 6. melléklete, illetve az NKT. pár további paragrafusa is figyelembe veendő.
+
+===== Engedélyezet időkeret =====
+
+A NKT. 6. melléklete tartalmazza évfolyamonkénti lebontásban az osztályok engedélyezett időkeretét. Ez általában lényegesen több, mint a szintén ebben
+a mellékletben megállapított heti maximális óraszám az adott évfolyamon, hiszen az órakeretbe bele kell férjenek a tanórán kívüli foglalkozások is (pl.
+napközi, tanulószoba), illetve a csoportbontásokból adódó óratöbblet.
+
+===== Tehetséggondozás, felzárkóztatás =====
+
+A NKT. 27. § (5) értelmében heti 2 órát kell számolni osztályonként tehetséggondozásra és felzárkóztatásra.
+
+===== Egyházi fenntartású intézmények hitoktatásra fordítható többlet óraszáma =====
+
+A 6. melléklet szerint az egyházi intézmények számára többlet órakeretet kell bizosítani a hittan tanítására, melynek óraszámát a táblázat tartalmazza.
+
+===== 6 és 8 évfolyamos gimnáziumok többlet óraszáma =====
+
+A 6 és 8 évfolyamos gimnáziumok számára is évfolyamonként előírt többlet órakeretet tartalmaz a 6. melléklet.
+
+===== Nemzetiségi oktatás-nevelés többlet órakerete =====
+
+A nemzetiségi oktatás-nevelésre fordítható többlet órakeret évfolyamonkénti óraszámát szintén a 6. melléklet tartalmazza.
+
+===== SNI habilitációs és rehabilitációs foglalkozások többlet órakerete =====
+
+Bár a 6. melléklet külön tartalmaz órakeretet értelmi fogyatékosok; gyengénlátok; nagyothallók, mozgás- és beszédfogyatékosok; siketek és autisták; valamint egyéb SNI-sek
+számára (személyenként, évfolyamonként 2-15 között), ezeket a program jelenleg még **nem számolja bele** az össz óratömegbe.
+
+===== SNI magántanuló egyéni foglalkozás keretében történő felkészítés ötbblet órakerete =====
+
+A NKT. 27. § (7) szerint:
+A beilleszkedési, tanulási, magatartási nehézség vagy a sajátos nevelési igény miatt a szakértői bizottság véleménye alapján, vagy súlyos betegség miatt
+magántanulóként tanulmányokat folytatók egyéni foglalkozás keretében történő felkészítésére az iskolának tanulónként az osztályok heti időkeretén felül
+átlag heti tíz óra áll a rendelkezésre.
+
+A program jelenleg ezzel sem számol.
+
+===== Összefoglalva =====
+
+A program a fentiek alapján tehát egy alsó közelítést ad az osztályok heti időkeretéről, hisz sok időkeretet növelő tényezővel nem számol.
+A képlet:
+
+ [osztály időkerete] = [engedélyezett időkeret] + [tehetséggondozás, felzárkóztatás] + [egyházi iskola hittan] + [gimnáziumi óratöbblet]
+
+A nemzetiségi és SNI többlet óraszámokkal a program jelenleg nem számol.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/specialis_tanitasinap.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/specialis_tanitasinap.txt
new file mode 100644
index 00000000..6d17bc8a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/specialis_tanitasinap.txt
@@ -0,0 +1,25 @@
+====== Speciális tanításinap kezelése ======
+
+Hogyan tölthetünk be a haladási naplóba az órarendtől jelentősen eltérő órákat egy speciális tantervű tanításinap esetén?
+
+Alapvetően a rendszer biztosít egy alapszintű [[naplo:haladasi:specialis|speciális nap]] kezelő lehetőséget. Itt az órarend egyes órarebdi sávjaiból rakhatunk össze új tanrendet.
+
+Másik lehetőség lehet a [[naplo:haladasi:pluszora|plusz óra felvétel]]. Így elvben bármilyen órarend összeállítható, de elég fáradtságos úton.
+
+Mit tehetünk még?
+
+==== Órák közvetlen importálása ====
+
+Megpróbálhatjuk a haladási naplóba közvetlenül betölteni az adatokat. Ehhez először el kell készínetünk a betöltendő órák listáját a következő formátumban:
+
+| dt | ora | ki | tankorId | teremId | tipus | eredet |
+
+Ebből a teremId paraméter nem kötelező (ha nem adjuk meg, akkor legjobb, ha teljesen kihagyjuk az oszlopot, ha csak egyes helyeken hiányzik, akkor ott írjunk a terem azonosító helyére ''NULL'' értéket), a ki mező az órát tartó tanár azonosítója, a típus konstans 'normál', az eredet konstans 'plusz' érték lehet. A tanár és tankör azonosító számok kiolvashatók a rendszerből (a legtöbb helyen megjelennek a nevek mellett zárójelben).
+
+Ezek után mentsük el az állományt tabulátorokkal tagolt szöveges állományként, majd másoljuk fel a szerver ''/tmp'' könyvtárába.
+Ezek után adminisztrátorként belépve az adatokat be tudjuk tölteni [[naplo:admin:import|Napló/Admin/Import]] menüpont alatt.
+Ehhez válasszuk ki az sql táblák közül az adott tanévhez tartozó ''ora'' táblát, majd adjuk meg a feltöltött állomány elérési útját.
+A program ekkor beolvassa az állomány első öt sorát és megpróbálja felismerni az egyes mezőket az első sor alapján. Ha tehát az első sort a fentiek szerint írtuk be, akkor ezzel nem lesz dolgunk. Meg kell viszont jelölnünk a kulcsot alkotó mezőket. Erre általában a (dt, ora, ki) hármas a legmegfelelőbb - így a tanár szerinti ütközések lehetőségét kizárjuk. Ha biztosak vagyunk benne, hogy a megadott sorokat változtatás nélkül akarjuk betölteni, akár ütközéseket is megengedve, akkor több oszlopot kell kulcsként megjelölni, akár az összeset. Végül betöltjük az adartokat az ''OK'' gomb megnyomásával - és kész is! :o)
+
+**Megjegyzés:**
+Importálás előtt gondoskodjunk róla, hogy ne legyenek órák betöltve az adott napra! Ha vannak, akkor ezeket a [[naplo:haladasi:specialis|speciális nap]] belítását végző oldalon törölhetjük.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/sulix.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/sulix.txt
new file mode 100644
index 00000000..7dba5606
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/sulix.txt
@@ -0,0 +1,56 @@
+
+====== Együtműködés SuliXerver-rel ======
+
+===== Integráció SuliXerver-rel =====
+
+Az integráció lényegében annyit tesz, hogy a két rendszer közös felhasználói adatbázist használ a továbbiakban. Ehhez
+a SuliXerver LDAP alapú rendszere lesz a háttér-adatbázis. A korábbi MaYoR (tanár és diák) felhasználói adatokat - amennyiben eddig
+MySQL backend-et használtunk - importálhatjuk a SuliXerver alá.
+
+==== Exportálás a MaYoR rendszerből ====
+
+Ez a lépés egyszerű: válasszuk ki a Napló/Export/SuliX menüpontot, majd nyomjuk meg az 'Adatok exportálása" gombot, végül a
+letöltött tgz kiterjesztésű állományt másoljuk egy hordozható háttértárra (pl. pendrive).
+
+==== Importálás SuliXerverbe ====
+
+Adminisztrátorként lépjünk be és válasszuk a Segédeszközök/SuliX Napló/Külső MaYoR napló használata lehetőséget, majd kövessük az ott leírtakat...
+
+==== MaYoR beállítások módosítása ====
+
+Utolsó lépésként módosítsuk a ''config/private-conf.php'' állomány tartalmát (előtte készítsünk mentést róla!) az alábbiak szerint
+(a példánkban a SuliXerver LDAP base DN "dc=suli,dc=hu", a szerver host neve "sulix.suli.hu"):
+
+ $AUTH['private'] = array(
+ ...
+ 'categoryMap' => array(
+ 'tanar' => 'cn=teachers,ou=group,dc=suli,dc=hu',
+ 'diak' => 'cn=students,ou=group,dc=suli,dc=hu',
+ 'titkarsag' => 'cn=administration,ou=group,dc=suli,dc=hu',
+ 'egyeb' => 'cn=other,ou=group,dc=suli,dc=hu',
+
+ 'useradmin' => 'cn=useradmins,ou=group,dc=suli,dc=hu',
+ 'naploadmin' => 'cn=diaryadmins,ou=group,dc=suli,dc=hu',
+ 'diakadmin' => 'cn=studentadmins,ou=group,dc=suli,dc=hu',
+ 'uzenoadmin' => 'cn=msgadmins,ou=group,dc=suli,dc=hu',
+ 'hirekadmin' => 'cn=newsadmins,ou=group,dc=suli,dc=hu',
+ 'vezetoseg' => 'cn=management,ou=group,dc=suli,dc=hu',
+
+ ),
+ 'backend' => 'ldapng',
+ 'ldapHostname' => 'ldap://sulix.suli.hu',
+ 'ldapBaseDn' => 'dc=suli,dc=hu',
+ 'ldapUserObjectClass' => 'person', // Userek objectum osztálya (volt posixAccount)
+ 'ldapStudyIdAttr' => 'employeenumber', // Az oktatási azonosítót tároló attribútum (studyId)
+ 'ldapUserAccountAttr' => 'uid', // A felhasználói azonosítót tároló attribútum (uid)
+ 'ldapCnAttr' => 'cn', // A felhasználói teljes neve (cn)
+ 'ldapGroupObjectClass' => 'groupofnames', // Csoportok objectum osztálya (volt nayorGroup)
+ 'ldapGroupCnAttr' => 'cn', // A csoport teljes neve (cn)
+ 'ldapContainers' => array(
+ 'ou=People,dc=suli,dc=hu',
+ 'ou=group,dc=suli,dc=hu'
+ ),
+ 'cacheable' => true,
+ ...
+ )
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese.txt
new file mode 100644
index 00000000..c804dc6f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese.txt
@@ -0,0 +1,110 @@
+====== Szülői adatok betöltése ======
+
+A szülői adatok felvétele normál esetben - a diák többi adatával együtt - a beiratkozáskor történhet. De az is előfordulhat, hogy a szülői adatokat utólag, tömegesen szeretnénk betölteni valamilyen adatállományból - tipikusan ilyen eset a telepítés utáni első adatfeltöltés. Erről - illetve a szülők felhasználói azonosítóinak adatbázis szinten történő létrehozásáról (MySQL backend-et feltételezve) - szól ez a leírás.
+
+===== Szülők adatainak betöltése adatállományból a naplóba =====
+
+A szülők adatait általában a diákok adatival együtt kapjuk meg, egy táblázatban. A MaYoR rendszerben viszont a szülők adatai külön adattáblába kerülnek. Ez a használat során előnyös (pl. testvér gyerekek szülői adatai csak egy helyen lesznek eltárolva), de a betöltéskor nehézségeket okoz.
+
+Első lépésként a rendelkezésre álló adatokból olyan tabulátorokkal tagolt szöveges állományokat kell készítenünk, melyekben a diák oktatási azonosítója mellett szerepelnek a betöltendő szülői adatok. Ennek menete nagyban függ a rendelkezésre álló adatok formátumától, de használhatunk táblázatkezelőt, vagy ügyes parancssori alkalmazásokat (''cut'', ''grep'', ''awk'', ''sed'', stb). Külön állományba kerüljenek az anya, apa és más gondviselő adatai. Az állomány fejlécében érdemes az intézményi adatbázis ''szulo'' táblájának mezőneveit használni:
+
+ oId nem nevElotag csaladinev utonev cimOrszag cimHelyseg cimIrsz cimKozteruletNev cimKozteruletJelleg cimHazszam cimEmelet cimAjto
+
+
+A kész állományokat másoljuk a szerver ''/tmp'' könyvtárába.
+
+Majd módosítsuk a ''szulo'' táblát ideiglenesen egy ''oId'' mező hozzáadásával:
+
+ alter table szulo add column oId bigint(11) unsigned;
+
+Ezt a mezőt két dologra fogjuk használni: egyrészt ez alapján tudjuk majd megkülönböztetni az épp betöltött rekordokat a már korábban bekerültektől (azoknál ez a mező ''NULL'' értékű lesz), másrészt ez a mező lesz a kapcsolat a diák tábla fele. A betöltési folyamat végére ez a kapcsolat épp ellenkező irányú lesz: a ''diak'' tábla ''anyaId'', ''apaId'', ''gondviseloId'', illetve ''neveloId'' mezői fognak a megfelelő szülő ''szuliId'' attribútumára mutatni.
+
+Az adatokat betölthetjük MySQL parancssorból (LOAD DATA INFILE ...), vagy a felületről az "Admin/Import" menüpontban. Itt a ''szulo'' tábla kiválasztása után az adatállomány elérési útját kell megadnunk. Ezek után a program beolvassa az állomány első öt sorát és ha megfelelő mezőneveket használtunk, akkor elvégzi az oszlopok mezőkhöz rendelését is (egyébként et nekünk kell megtenni). A betöltés előtt még mindenképp meg kell adnunk egy (vagy több) kulcs mezőt - jelen esetben a diák oktatási azonosítója és a név megfelelő lehet.
+
+A felvett szülőket az oktatási azonosító alapján rendeljük a megfelelő diák megfelelő atribútumához. Például az ''anya'' adatok esetén az ''anyaId'' atribútumhoz:
+
+ update szulo left join diak using (oid) set anyaId=szuloId where szulo.oId is not null;
+
+(Csak a most betöltött adatok esetén lehet a szulo oId mezője nem null értékű)
+Hasonlóan járunk el az ''apa'', a ''gondviselo'', illletve a ''nevelo'' esetén is.
+
+A hozzárendeltek oId-jét NULL-ra állítjuk (hogy a következő betöltésnél megint csak az új rekordok esetén legyen ennek a mezőnek értéke):
+
+ update szulo set oId=null where oId is not null;
+
+===== Duplán adminisztrált szülők kiszűrése =====
+
+Most jön a neheze! Ki kell szűrjük a többszörös neveket - ezek lehet hogy testvérek miatti adat-többszöröződések. Hogy tényleg azok-e, az csak az egyéb adatok vizsgálatával, illetve utánajárással deríthető ki:
+
+ select concat_ws(' ',csaladinev,utonev) as nev, count(*) as db from szulo group by nev having db>1 order by nev;
+
+Ha például Vincs Eszter szerepel a többszörös nevek listájában, akkor lekérdezzük az adataikat:
+
+ select * from szulo where concat_ws(' ',csaladinev,utonev)='Vincs Eszter';
+
+A cím és egyéb adatok alapján már sejthetjük, hogy egy személyt reprezentáló két rekordról van-e szó, vagy két különböző, csak épp azonos nevű személyt találtunk.
+
+A szuloid-k alapján lekérdezhetjük a hozzájuk tartozó diákok adatait is (a szuloId-k pl. 28 és 293):
+
+ select * from diak where anyaId in (28,293);
+
+Ha úgy ítéljük meg, hogy a két rekord ugyanazt a szülőt jelöli, akkor módosítjuk a hozzárendelést és töröljük a felesleges szülőt:
+
+ update diak set anyaId=28 where anyaId=293;
+ delete from szulo where szuloId in (293);
+
+Valódi névütközés esetén a továbbiakban különböző ''userAccount''-okat kell beállítani a két rekordban...
+
+===== A szülők felhasználói azonosítói ======
+
+A naplóban szereplő szülők számára készíthetünk felhasználói azonosítókat, de lehetnek olyan szülő objektumaink is, melyekhez nem tartozik azonosító. Ilyenek az elballagott diákok szülei - adataik továbbra is szerepelnek a naplóban, de a rendszerhez már nem kell hozzáférniük, ezért felhasználói azonosítót nem kapnak.
+
+A szülői azonosítók létrehozása két adattáblát érint: egyrészt létre kell hoznunk magát az azonosítót a ''mayor_parent.accounts'' táblában, másrészt meg kell mondanunk, hogy ez a felhasználói azonosító mely naplóban szereplő szülőhöz tartozik - ezt a ''szulo'' tábla ''userAccount'' mezőjében adjuk meg.
+
+Első lépésként tehát a ''szulo'' táblában generáljunk ''userAccount''-ot a nevek alapján:
+
+ update szulo set userAccount=concat(substring_index(csaladinev,' ',-1),'.',substring_index(utonev,' ',1)) where userAccount is null;
+
+A fenti utasítás minden olyan rekordban kitölti a userAccount mezőt, amelyben az eddig üres volt. Ez egy első adatfeltöltés esetén megfelelő lehet, később azonban már nem, hiszen ezzel például az elballagott diákok szüleinek is újra azonosítót generálnánk. A problémára többféle megoldás is kínálkozik. Egyik lehetőség, hogy a felhasználói azonosítókat is az adatállományból töltjük be a többi szülői adattal együtt. A másik lehetőség, hogy a ''szulo'' táblát összekapcsoljuk a ''diak'' táblával, hogy csak a jogviszonyban lévő tanulók szüleinek adjunk ''userAccount''-ot:
+
+ update szulo left join diak
+ on szuloId in (anyaId, apaId, gondviseloId, neveloId)
+ and diak.statusz in ('jogviszonyban van','magántanuló','vendégtanuló')
+ set userAccount=concat(substring_index(csaladinev,' ',-1),'.',substring_index(utonev,' ',1)) where userAccount is null;
+
+Ezek után ellenőrizzük, hogy vannak-e ütköző felhasználói azonosítók:
+
+ select userAccount,count(*) as db from szulo group by userAccount having db>1;
+
+Sajnos előfordulhat, hogy újabb szülőket találunk, akik többször szerepelnek az adatbázisban, de az is lehet, hogy csak egyszerű név egyezés keseríti a dolgunkat. A javítás a korábbiakban leírt módon történik egészen addig, amíg sikerül elérni, hogy minden szülőnek egyedi azonosítója legyen.
+
+==== Szülői azonosítók felvétele (MySQL backend) ====
+
+Ha az összes ütközést kiküszöböltük, akkor felvehetjük a szülői azonosítókat a ''mayor_parent.accounts'' táblába.
+
+Ha kezdeti adatfelvitelről van szó, tehát az összes azonosítót most hozzuk létre, akkor a parancs a következő lehet:
+
+ insert into mayor_parent.accounts (policy,userAccount,userCn,userPassword)
+ select 'parent',userAccount,trim(concat_ws(' ',nevElotag,csaladinev,utonev)) as userCn,sha(crc32(csaladinev)) as userPassword from szulo;
+
+Ha vannak már azonosítók a ''mayor_parent.accounts'' táblában, akkor csak azokat az azonosítókat kell és lehet létrehozni, amelyek még nem szerepelnek a táblában:
+
+ insert into mayor_parent.accounts (policy,userAccount,userCn,userPassword)
+ select 'parent',userAccount,trim(concat_ws(' ',nevElotag,csaladinev,utonev)) as userCn,
+ sha(crc32(csaladinev)) as userPassword
+ from intezmeny_vmg.szulo left join mayor_parent.accounts using (userAccount)
+ where szulo.userAccount is not null and accounts.userCn is NULL;
+
+Ha még precízebbek akarunk lenni, akkor a ''diak'' táblával is össze kell kapcsolnunk a ''szulo'' táblát, hogy csak a jogviszonyban lévő diákok szüleinek adjunk azonosítót:
+
+ insert into mayor_parent.accounts (policy,userAccount,userCn,userPassword)
+ select distinct 'parent',userAccount,
+ trim(concat_ws(' ',nevElotag,csaladinev,utonev)) as userCn,
+ sha(crc32(csaladinev)) as userPassword
+ from intezmeny_vmg.szulo
+ left join mayor_parent.accounts using (userAccount)
+ left join intezmeny_vmg.diak
+ on szuloId in (anyaId, apaId, gondviseloId, neveloId)
+ and diak.statusz in ('jogviszonyban van','magántanuló','vendégtanuló')
+ where szulo.userAccount is not null and accounts.userCn is NULL;
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese_kiegeszitesekkel.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese_kiegeszitesekkel.txt
new file mode 100644
index 00000000..dc7969a0
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_adatok_betoeltese_kiegeszitesekkel.txt
@@ -0,0 +1,92 @@
+====== Szülői adatok betöltése - kiegészítésekkel(!) ======
+
+A szülők adatait általában a diákok adatival együtt kapjuk meg, egy táblázatban. A MaYoR rendszerben viszont a szülők adatai külön adattáblába kerülnek. Ez a használat során előnyös (pl. testvér gyerekek szülői adatai csak egy helyen lesznek eltárolva), de a betöltéskor nehézségeket okoz.
+
+Első lépésként a rendelkezésre álló adatokból olyan tabulátorokkal tagolt szöveges állományokat kell készítenünk, melyekben a diák oktatási azonosítója mellett szerepelnek a betöltendő szülői adatok. Ennek menete nagyban függ a rendelkezésre álló adatok formátumától, de használhatunk táblázatkezelőt, vagy ügyes parancssori alkalmazásokat (''cut'', ''grep'', ''awk'', ''sed'', stb). Külön állományba kerüljenek az anya, apa és más gondviselő adatai.
+
+Módosítsuk a ''szulo'' táblát ideiglenesen egy ''oId'' (diák oktatási azonosítója) mező hozzáadásával (ezt csak a __legelső__ alkalommal kell elvégezni!):
+
+ ALTER TABLE szulo ADD COLUMN oId bigint(11) unsigned;
+
+Az szülői adatok fájl fejlécében érdemes az intézményi adatbázis ''szulo'' táblájának mezőneveit használni:
+
+ oId nem nevElotag csaladinev utonev cimOrszag cimHelyseg cimIrsz cimKozteruletNev cimKozteruletJelleg cimHazszam cimEmelet cimAjto telefon
+
+A kész állományokat másoljuk a szerver ''/tmp'' könyvtárába.
+
+
+A sokadik osztály után, sőt, a második tanévtől kezdve biztosan lesznek egyező nevű szülők. A kezdeti (vagyis az új adatok feltöltése __előtti__) állapotot listázzuk ki, később nagyon nehéz lesz kiszűrni, kik is az új, egyező nevű szülők!
+
+ SELECT concat_ws(' ',csaladinev,utonev) as nev, count(*) as db FROM szulo GROUP BY nev having db>1 ORDER BY nev;
+
+Ezt a listát mentsük/másoljuk - hasznos lesz később!
+
+Az adatokat betölthetjük MySQL parancssorból (LOAD DATA INFILE ...), vagy a felületről az "Admin/Import" menüpontban. Itt a ''szulo'' tábla kiválasztása után az adatállomány elérési útját kell megadnunk. Ezek után a program beolvassa az állomány első öt sorát és ha megfelelő mezőneveket használtunk, akkor elvégzi az oszlopok mezőkhöz rendelését is (egyébként et nekünk kell megtenni). A betöltés előtt még mindenképp meg kell adnunk egy (vagy több) kulcs mezőt - jelen esetben a diák oktatási azonosítója és a név megfelelő lehet.
+
+A felvett szülőket az oktatási azonosító alapján rendeljük a megfelelő diák megfelelő atribútumához. Például az ''anya'' adatok esetén az //anyaId// atribútumhoz:
+
+ UPDATE szulo LEFT JOIN diak using (oid) SET anyaId=szuloId WHERE szulo.oId IS NOT NULL;
+
+(Csak a most betöltött adatok esetén lehet a ''szulo'' //oId// mezője nem null értékű)
+
+Most jön a neheze! Ki kell szűrjük a többszörös neveket - ezek lehet, hogy testvérek miatti adat-többszöröződések. Hogy tényleg azok-e, az csak az egyéb adatok vizsgálatával, illetve utánajárással deríthető ki (itt lesz szerepe az elején mentett lekérdezésnek - hasonlítsuk össze ezt a listát a "nulladik" változattal!):
+
+ SELECT concat_ws(' ',csaladinev,utonev) as nev, count(*) as db FROM szulo GROUP BY nev having db>1 ORDER BY nev;
+
+Ha például Vincs Eszter szerepel a többszörös nevek listájában, akkor lekérdezzük az adataikat:
+
+ SELECT * FROM szulo WHERE concat_ws(' ',csaladinev,utonev)='Vincs Eszter';
+
+A cím és egyéb adatok alapján már sejthetjük, hogy egy személy két azonosítójáról, vagy két különböző, de azonos nevű személy azonosítóiról van-e szó.
+A szuloid-k alapján lekérdezhetjük a hozzájuk tartozó diákok adatait is (a szuloId-k pl. 28 és 293):
+
+ SELECT * FROM diak WHERE anyaId in (28,293);
+
+Ha úgy ítéljük meg, hogy a két rekord ugyanazt a szülőt jelöli, akkor módosítjuk a hozzárendelést és töröljük a felesleges szülőt:
+
+ UPDATE diak SET anyaId=28 WHERE anyaId=293;
+ DELETE FROM szulo WHERE szuloId in (293);
+
+Valódi névütközés esetén különböző //userAccount//-okat kell beállítani a két rekordban.
+
+A már távozott diákok (elballagottak) szülői adatai még szerepelnek a táblában, ezeknek a rekordoknak is üres a userAccont-ja, ezért a többi //userAccount//-ot a nevek és az //oId//-k alapján generáljuk:
+
+ UPDATE szulo SET userAccount=concat(csaladinev,'.',substring_index(utonev,' ',1)) WHERE userAccount IS NULL AND oId IS NOT NULL;
+
+Majd újabb ütközés ellenőrzés következik:
+
+ SELECT userAccount,count(*) as db FROM szulo GROUP BY userAccount having db>1;
+
+Sajnos előfordulhat, hogy újabb szülőket találunk, akik többször szerepelnek az adatbázisban. A javítás a korábbiakban leírt módon történhet.
+Ha az összes ütközést kiküszöböltük, akkor felvehetjük a szulői azonosítókat, ehhez vegyünk fel ideiglenesen egy táblát:
+
+ CREATE TEMPORARY TABLE _szulo SELECT * FROM szulo LEFT JOIN
+ mayor_parent.accounts USING (userAccount) WHERE userCn IS NULL AND szulo.oId IS NOT NULL;
+
+majd a továbbiakban dolgozzunk ezzel!
+
+ INSERT INTO mayor_parent.accounts (policy,userAccount,userCn,userPassword)
+ SELECT 'parent',userAccount,trim(concat_ws(' ',nevElotag,csaladinev,utonev))
+ as userCn,sha(crc32(csaladinev)) as userPassword FROM _szulo;
+
+Ha kész vagyunk, az ideiglenes táblát eldobhatjuk:
+
+ DROP TABLE _szulo;
+
+Végül a hozzárendeltek //oId//-jét a ''szulo'' táblában NULL-ra állítjuk:
+
+ UPDATE szulo SET oId=null WHERE oId IS NOT NULL;
+
+Végezzük el ezeket a lépéseket az apa, és esetleg a más gondviselő adataival is!
+
+A szülői account-ok lekérdezéséhez válasszuk ki az osztály táblából a keresett osztály //osztályId//-jét (pl.24), majd:
+
+ SELECT szuloId,csaladinev,utonev,useraccount,crc32(csaladinev) FROM intezmeny_szag.osztalyDiak
+ LEFT JOIN intezmeny_szag.diak using (diakId) LEFT JOIN intezmeny_szag.szulo on szuloId in
+ (anyaId,apaId,gondviseloId,neveloId) WHERE osztalyId=24 AND beDt<=curdate() AND (kiDt is null or kiDt>=curdate());
+
+Az //osztályId//-t az osztaly táblából leshetjük ki, vagy kikeresünk egy ebbe az osztályba járó diákot (Intézményi adatok/Diákok), feljegyezzük a //diakId//-jét (pl. 134), és az osztalyDiak táblából kikeressük:
+
+ SELECT * FROM osztalyDiak WHERE diakId=134;
+
+__Megjegyzés:__ a beDt<=curdate() helyett az aktuális tanév kezdődátumát írhatjuk, ha pl. az osztálybakerülés dátuma szeptember 1., és az account-okat még e dátum előtt szeretnénk elkészíteni!
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_azonositok_generalasa.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_azonositok_generalasa.txt
new file mode 100644
index 00000000..35d27cad
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/szueloi_azonositok_generalasa.txt
@@ -0,0 +1,149 @@
+
+====== Szülői azonosítók generálása ======
+
+A meglévő szülői adatokból (intézményi adatbázis ''szulo'' tábla) SQL utasításokkal könnyen generálhatunk azonosítókat a szülők számára.
+
+Az első lépés, hogy kiválogassuk azon szulők körét, akiknek azonosítót kívánunk generálni. Célszerű ehhez az osztályok felöl közelíteni.
+Válasszuk ki az osztályt, vagy osztűlyokat, majd kérdezzük le az osztály(ok) tagjait. Ezek után szelektáljuk az adott diákok szuleit.
+Az így kiválasztott szülők számára generálunk azonosítókat (persze közben ellenőrizzük, hogy ne legyen azonosító ütközés).
+
+===== A kiindulási állapot ellenőrzése =====
+
+Mielőtt még nekikezdenénk a szülői azonosítók generálásának érdemes ellenőrizni, hogy a kiindulási adatok rendben vannak-e.
+Pár dolog amit érdemes ellenőrizni, szükség esetén javítani:
+
+==== Bevezető/lezáró szóközök törlése a név mezőkből ====
+
+Az adatbevitelkor sajnos gyakori, hogy szóközök tapadnak az egyes név mezőkhöz, különösen akkor, ha a neveket programmal, vagy "kézzel" mi
+vágtuk szét családi- és utónévre. Ilyenkor gyakran az utónév végén ott marad a két nevet elválasztó szóköz. Ellenőrizzük, van-e ilyen rekordunk:
+
+ select count(*) from szulo where (csaladinev<>trim(csaladinev) or utonev<>trim(utonev));
+
+Ha van, rögtön javíthatjuk:
+
+ update szulo set csaladinev = trim(csaladinev), utonev = trim(utonev);
+
+==== Ütköző azonosítók kiszűrése ====
+
+Az ütközéseket fogjuk szűrni és javítani az új azonosítók generálása kapcsán is. Épp ezért érdemes az azonosító generálás előtt is
+megnézni, hogy van-e ütközés:
+
+ select userAccount,count(*) as db from szulo group by userAccount having db>1;
+
+Ha van ütközés, javítsuk a hibát (lásd alább).
+
+==== Szóközök az azonosítóban ====
+
+A hibás, szóközökkel határolt nevek miatt előfordulhat, hogy keletkeztek hibás, szóközöket is tartalmazó azonosítók is. Szűrjük ki ezeket:
+
+ select * from szulo where userAccount is not null and locate(' ',userAccount) <> 0;
+
+A hibás account-okat javítsuk (a ''szulo'' és a ''mayor_parent.accounts'' táblában is!).
+
+===== Az osztály azonosítójának lekérdezése =====
+
+Ha egy osztály szülői azonosítóit szeretnénk megtudni, akkor először meg kell tudnunk az osztály azonosítóját (''osztalyId'').
+
+Példánkban a Városmajori Gimnázium (vmg) 2011-es 7.a osztályának azonosítóját kérdezzük le:
+
+ select * from naplo_vmg_2011.osztalyNaplo where osztalyJel='7.a';
+ +-----------+------------+
+ | osztalyId | osztalyJel |
+ +-----------+------------+
+ | 64 | 7.a |
+
+Ellenőrizhetjük az ''osztaly'' táblában is, hogy helyes adatokat kaptunk-e:
+
+ select * from osztaly where osztalyId=64;
+ +-----------+--------+------------+------------+------+---------------+-------------+
+ | osztalyId | leiras | kezdoTanev | vegzoTanev | jel | kezdoEvfolyam | telephelyId |
+ +-----------+--------+------------+------------+------+---------------+-------------+
+ | 64 | angol | 2011 | 2016 | a | 7 | 1 |
+
+
+===== Az osztály(ok) tagjainak lekérdezése =====
+
+Először töröljük az esetleg már létező segédtáblát:
+
+ drop table if exists _diakIds;
+
+Majd kérdezzük le a kiválasztott osztály jelenlegi tagjait:
+ create temporary table _diakIds
+ select diakId from osztalyDiak where osztalyId = 64 and beDt <= curdate() and (kiDt is null or kiDt >= curdate());
+
+De lekérdezhetjük egy lépésben az összes 2011-ben érvéenyes osztály tagjait is:
+ create temporary table _diakIds
+ select distinct diakId from osztalyDiak
+ where beDt <= curdate() and (kiDt is null or kiDt >= curdate()) and
+ osztalyId in (select osztalyId from naplo_vmg_2011.osztalyNaplo);
+
+
+===== A diákok szüleinek lekérdezése =====
+
+A diák azonosítók alapján most a szülők azonosítóit kérdezzük le. Először az anya, majd az apa adatokat rakjuk be az ideiglenes táblába.
+
+==== Anya ====
+
+ drop table if exists _szuloIds;
+ create temporary table _szuloIds
+ select distinct anyaId as szuloId from diak where anyaId is not null
+ and diakId in (select diakId from _diakIds);
+
+==== Apa ====
+
+ insert into _szuloIds
+ select distinct apaId as szuloId from diak where apaId is not null
+ and diakId in (select diakId from _diakIds);
+
+===== userAccount-ok generálása a szulo táblában =====
+
+A kiválasztott szülők számára generáljunk ''userAccount''-okat. Vigyázzunk, hogy a keletkező ''userAccount'' ne tartalmazzon szóközt.
+Az alábbi frissítő lekérdezés "Dr. Alsóné Felső Anett Beáta" számára a "Felső.Beáta" azonosítót fogja beállítani. Vigyázunk arra is
+hogy csak azoknak módosítsuk a felhasználói azonosítóját, akiknek még nincs beállítva (''userAccount is null''):
+
+ update szulo set userAccount=concat(substring_index(csaladinev,' ',-1),'.',substring_index(utonev,' ',1))
+ where userAccount is null and szuloId in (select szuloId from _szuloIds);
+
+A gond az, hogy a fenti művelettel előidézhettünk account ütközést. Lássuk, mi a helyzet ezen a téren!
+
+ select userAccount,count(*) as db from szulo group by userAccount having db>1;
+ +-------------------+------+
+ | userAccount | db |
+ +-------------------+------+
+ | Székely.László | 2 |
+
+Példánkban a "Székely.László" azonosító két szülőhöz is hozzá lett rendelve. Találjunk ki egy új azonosítót - legyen ez esetünkben "László.Székely" -,
+és ellenőrizzük, hogy használatban van-e már:
+
+ select * from szulo where userAccount = 'László.Székely';
+ Empty set (0.01 sec)
+
+Amennyiben sikerült olyan azonosítót kitalálnunk, ami még nincs használatban (ahogy az a fenti példában is látszik), akkor módosítsuk az általunk felvett
+"Székely.László" azonosítót:
+
+ update szulo set userAccount='László.Székely'
+ where userAccount = 'Székely.László' and szuloId in (select szuloId from _szuloIds);
+
+===== Account-ok létrehozása =====
+
+Ha nincs már ütközés, akkor egy ideiglenes táblába hozzuk létre az account-okat:
+
+ drop table if exists _accounts;
+ create temporary table _accounts
+ select 'parent' as policy, szulo.userAccount,
+ trim(concat_ws(' ',nevElotag,csaladinev,utonev)) as userCn,sha(crc32(csaladinev)) as userPassword
+ from szulo left join mayor_parent.accounts using (userAccount)
+ where accounts.userAccount is null and szuloId in (select szuloId from _szuloIds);
+
+===== Account-ok felvétele =====
+
+Ha minden rendbenlévőnek tűnik, akkor átmásolhatjuk az ideiglenes táblából az új account-okat a helyükre:
+
+ insert into mayor_parent.accounts (policy,userAccount,userCn,userPassword) select * from _accounts;
+
+===== Új account adatok eltárolása =====
+
+Az ideiglenes táblák (''_diakIds'',''_szuloIds'', ''_accounts'') automatikusan törlődnek, ha kilépünk az SQL parancssorból. Ha valamiért szükségünk van a generált account-okra,
+akkor másoljuk át őket egy rendes táblába (vagy az ''_accounts'' táblát eleve a ''temporary'' módosító nálkül hozzuk létre):
+
+ create table _ujSzuloAccount select * from _accounts;
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tantargyfelosztas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tantargyfelosztas.txt
new file mode 100644
index 00000000..c4fe9593
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tantargyfelosztas.txt
@@ -0,0 +1,189 @@
+
+====== Tantárgyfelosztás ======
+
+===== A tantárgyfelosztás előkészítése =====
+
+Ahhoz, hogy elkezdhessük a tantárgyfelosztást elkészíteni előzetesen fel kell vinnünk az ehhez szükséges alapvető adatokat:
+
+ * Legyen felvéve minden osztály
+ * Legyen felvéve minden tanár
+ * Legyenek felvéve a munkaközösségek (amik valójában inkább végzettség szerinti tanárcsoportok)
+ * Legyenek felvéve a munkaközösségek alá a tárgyak
+ * Legyenek felvéve a képzések
+ * Legyenek felvéve a képzések óratervei
+ * Legyenek egymáshoz rendelve a megfelelő képzések és osztályok
+
+===== A bontások =====
+
+A tantárgyfelosztás első lépése a tárgyi bontások megadása. A **bontás** tehát az adott képzési évfolyam adott tantárgyához rendelt
+tanulócsoportot jelöli konkrét névsor és egyéb jellemzők nélkül.
+A tankör kicsit más fogalom: egy adott tárgyat tanuló diákok csoportja konkrét névsorral, tanárral, és egyéb jellemzőkkel megadva.
+
+Fontos különbség, hogy a bontás egy tanévhez kapcsolódó fogalom, minden évben újra meghatározandó, míg a tankör több éven át használatban lesz.
+
+Sok esetben egy bontásnak egy tankör felel majd meg egy adott évben. Ilyenek lesznek pl. az egész osztályt érintő tárgyak (osztályfőnöki, földrajz...), vagy az egyszerű
+csoportbontások, amikor két-három kisebb csoportban tanulnak egy tárgyat a tanulók (pl. informatikát a gépterem befogadóképessége miatt két csoportban tanulnak a diákok).
+
+Lehetnek ugyanakkor olyan esetek is, amikor egy bontást több tankör fed le. Ha például egy nyelvi előkészítő évfolyamon a heti 15 órát négy tanár tanítja a
+csoportnak, akkor a négy tankör együtt fedi le az egy bontást.
+
+Előfordulhat olyan is, hogy egy tankör több bontást is lefed. Ha például a kémiát egy egész osztályos elméleti óra mellett két kisebb csoportban folyó labor óra keretében
+tanulják a tanulók, akkor ez egy két bontott csoportot és három tankört jelent: az elméleti óra tanköre mindkét bontáshoz hozzá lesz rendelve, mígy a labor órák tankörei
+csak a megfelelő bontáshoz.
+
+Az is előfordulhat, hogy egy tankör két különböző tárgy bontásához lesz hozzárendelve. Ebben az esetben persze a //tárgy// tágan értendő: a képzés óratervében szereplő
+lehetséges tárgyakra, sávokra gondolunk, beleértve olyan speciális tárgyakat, mint "első idegen nyelv", "második idegen nyelv" vagy "kötelezően választott tárgy".
+Ha például az emelt szintű matematika érettségi előkészítőt úgy szervezzük, hogy az adott csoport együtt van alapórán és fakultációs órán is, tehát lényegében a csoport
+megnövelt óraszámban (pl. 4+2, azaz 6 órában) tanulja a matematikát, nem különül el a kétféle órájuk, akkor ehhez nyilván egy tankört fogunk felvenni, amit hozzárendelünk
+a matematika tárgy bontásához és a "kötelezően választott tárgy" bontásához is.
+
+===== Adatbázis =====
+
+A ''kepzesOraterv'' tábla minden évfolyam esetén félévenként tartalmazza az adott tárgy/típus óraszámát. A folyamat másik végén a tankör esetében is hasonló a
+helyzet: a ''tankorSzemeszter'' tábla félévenként tartalmazza a tankör óraszámát.
+
+A kettő között helyezkedik el a ''kepzesTargyBontas'', ami ebből adódóan szintén félévenként rögzíti a bontásokat és azok tárgyait (pl. első idegen nyelv esetén), pontosabban a bontások szerkezetét, s a
+''kepzesOratervId'' mezővel kapcsolódik a ''kepzesOraterv'' táblához.
+
+A bontások tankörökhöz rendelése a ''bontasTankor'' táblával történik, ami a két azonosító mellett egy-egy óraszám adatot is tartalmaz. Az óraszámokat bontásonként
+összegezve képzés óraterv megfelelő óraszámát kell megkapnunk. Tankörönként nehezebb az óraszámok ellenőrzése, mert egy tankör egy tárgy különböző bontásait is lefedheti,
+de ezeket az óraszámokat csak egyszer kell számolni. Viszont ha különböző tárgyakat/típusokat fed le a tankör, akkor össze kell adni az óraszámokat. (Ez megoldható
+a MAX() értékek SUM()-jával.)
+
+===== Lépések =====
+
+ - Inicializálás - a program az előző év adatai alapján automatikusan átveszi az átvehető bontásokat a tankörhozzárendelésekkel együtt, a fennmaradó konkrét tárgyhoz
+tartozó bejegyzésekhez pedig egy-egy bontást vesz fel
+ - Bontás megadás
+ - Bontás-tankör hozzárendelés
+ - tankör tanár hozzárendelés
+ - óraszámok ellenőrzése (tanár, bontások, tankörök, intézmény...)
+
+===== Bontások, tankör-hozzárendelés =====
+
+A funkció a ''Tanév adatok/Tantárgyfelosztás, bontás-tankör'' menüpont alatt érhető el.
+
+==== Szűrés ====
+
+A szűrés során először évfolyamot (pontosabban évfolyam jelet) kell választanunk, utána szűkíthetjük a megjelenő osztályok körét, s a kiválasztott osztályok képzéseinek
+körét.
+
+Ha már megjelentek a kiválasztott osztályok, képzések óratervi bejegyzései, akkor a jobb felső sarokban lehetőségünk van ezek közül eltűntetni azokat, melyek
+már kész vannak, tehát minden bontásuk teljes óraszáma tankörökkel lekötött.
+
+==== Bontások felvétele - törlése ====
+
+Ha kiválasztottunk osztályt és képzést (legalább egyet-egyet), akkor megjelennek a hozzájuk tartozó (az osztály aktuális évfolyamára vonatkozó) óratervi bejegyzések.
+
+Ezek mindegyikéhez a rendszer az oldal betöltéskor hozzárendel legalább egy bontást (csoportot) - ha még nincs hozzá rendelve egy sem -, kivéve azokat az
+óratervi bejegyzéseket, melyek tárgy típust tartalmaznak csak, tárgyat nem (pl: első idegen nyelv, kötelezően választható...).
+
+A program alaphelyzetben az egymásnak megfeleltethető bejegyzéseket egymás alá csúsztatva jeleníti meg. Az így egybefogott bejegyzések együtt kezelhetők: egy lépésben
+vehető fel hozzájuk új bontás, vagy törölhető korábbi. A csoportosítás bármikor felbontható, a baloldali lefele mutató nyílra kattintva. Lenyitott állapotból az egyes
+sorok elején levő felfele mutató nyílra kattintva a sorok ismét öszevonhatók.
+
+Új bontást a sorok jobb oldalán található plusz jelre kattintva vehetünk fel. Ha tárgy típushoz tartozó sorról van szó, akkor egy megjelenő listából tárgyat is kell
+választanunk a bontás rögzítéséhez.
+
+Bontás törlése a bontást szimbolizáló világos színű mező jobb szélén található X ikonra kattintva történhet. Fontos, hogy a törlés is minden összevont sorra
+vonatkozik.
+
+Mivel a képzési óraterv félévekre lebontva tartalmazza az óraszámokat, így a bontások megadása is mindkét félévre szükséges - ezt a csoportosíthatóság segíti.
+
+==== Tankör hozzárendelés ====
+
+Egy bontásra kattintva jobbról beúszva megjelennek az adott bontás tantárgyának megfelelő tankörök, elől, külön csoportban a megadott osztályok valamelyikéhez
+hozzárendeltek. A tankör bontáshoz rendelése - amennyiben lehetséges - egyszerűen a tankör nevére való kattintással történik.
+
+Előfordulhat azonban, hogy egy-egy tankör nem rendelhető az adott bontáshoz - ezt piros "❌" és szürke betűszín jelöli. E letiltás okozhatja például, ha a tankör
+összes óraszámát felhasználtuk már más típusú bontásokban. Ha például egy matematika tankör összes óráját hozzárendeltük egy matematika bontáshoz, akkor a
+"kötelezően választott" tárgy típusú bontáshoz már nem fogjuk tudni hozzárendelni.
+
+Akkor is egyfajta letiltott állapotba kerül a tankör, ha azonos típusú bontásban használtuk fel az óráit. Ezt narancssárga "▚" szimbólum és szürke betűszín jelöli.
+Az ilyen állapotú egyet tankörre kattintva annak állapota megváltozik, sárga "▐" jelölést kap, ami azt jelzi, hogy a tankör most már hozzárendelhető a kijelölt
+bontáshoz. Így lehet tehát egy tankört két azonos tárgyhoz tartozó bontáshoz is hozzárendelni. Szükség lehet erre olyan esetben, ha egy tárgyat bontott és
+összevont csoportban is tanulnak a tanulók, például az osztálynak van egy közös elméleti kémia órája, s emellett két csoportban kémia labor foglalkozáson is részt vesznek.
+Ebben az esetben a kémia tárgy kétfele bomlik, s a közös óra tankörét mindkét bontáshoz hozzá kell rendelnünk.
+
+Letiltott állapotban van az a tankör is, amit már hozzárendeltünk a kiválasztott bontásokhoz. Ezt zöld pipa (✔) és szürke betűszín jelöli.
+
+A program alap helyzetben a tankört a lehető legnagyobb óraszámmal rendeli a bontáshoz. Ha ezen változtatni szeretnénk, akkor az egeret a tankör neve mellett jobb oldalon
+elhelyezkedő óraszám fölé pozícionálva a megjelenő módosító gombokkal csökkenthetjük az óraszámot.
+
+Ha a listában szereplő egyik tankör sem felel meg, akkor lehetőségünk van arra, hogy új tankört vegyün fel a bontáshoz. Ehhez csak rá kell kattintanunk az erre szolgáló
+"Új tankör" feliratra. Ekkor a program létrehozza és a rendelkezésre álló adatok alapján beállítja az új tankört, de a beállításokon a megnyíló módosító felületen rögtön
+változtathatunk is.
+
+==== Tankör adatok módosítása ====
+
+Egy új tankör létrehozásakor, vagy egy hozzárendelt tankör nevére kattintva jobbról beúszva megjelennek a tankör legfontosabb adatai, melyeken lehetőségünk van változtatni
+is. Ha valamit módosítunk, megjelenik a fejléc alatt egy sárga "Módosít" felirat - erre kattintva véglegesíthetjük a módosításainkat.
+
+A felületen a tankör név jelölésére kattintva módosíthatjuk a tankör nevét, az hozzárendelt osztályokra kattintva az hozzárendeléseken váltztathatunk, s módosíthatjuk a
+az egyes félévekben tervezett óraszámokat is.
+
+A többi módosítás elvégzésére használjuk az Intézményi adatok/Tankörök oldalt.
+
+===== Tankör-tanár hozzárendelés =====
+
+A funkció az ''Intézményi adadatok/Tantárgyfelosztás, tankör-tanár'' menüpont alatt érhető el.
+
+==== Szűrés ====
+
+A ''Szűrés'' feliratra kattintva állíthatjuk be a szűrési feltételeket. A szűrési paraméterek határozzák meg, hogy mely tankörök és tanárok jelennek meg a tankör-tanár táblázatban.
+
+Alapvetően négyféle szűrési szempont adható meg:
+ - Osztályok
+ - Munkaközösségek
+ - Tárgyak
+ - Tanárok
+
+=== Tankörök szűrése ===
+
+A kiválasztott tanárok összes tanköre minden esetben megjelenik a lekérdezett tankörök között. A másik három szűrési paraméter a következő képpen működik:
+
+Amennyiben osztályokat kiválasztunk, de tárgyat és munkaközösséget egyet sem, akkor a program az adott osztály össszes tankörét le fogja kérdezni. Ha van munkaközösség vagy
+tárgy is megadva, akkor az ezek által meghatározott tárgyak szerint leszűkül a megjelenő tankörök köre. Ha nincs osztály megadva, akkor az összes érintett tárgyhoz tartozó
+tankör meg fog jelenni.
+
+=== Tanárok szűrése ===
+
+A kiválaszott tanárok minden esetben meg fognak jelenni a lekérdezett tanárok között. Ha ezen kívül csak osztály van kiválasztva, akkor az összes tanár megjelenik a
+táblázatban, adott tárgy vagy munkaközösség esetén viszont csak az érintett tárgyakat tanító tanárok fognak megjelenni a kiválasztottakon kívül.
+
+==== Tankör-tanár hozzárendelés ====
+
+A tankör-tanár hozzárendelést megjelenő táblázat egy-egy cellájára, vagy a cellában megjelenő jelölőnégyzetre kattintva végezhetjük el. A hozzárendelés minden esetben az
+adott év szorgalmi időszakára fog csak vonatkozni. Egy hozzárendelés rögzítésekor vagy megszűntetésekor a program újra számolja az érintett tanár lekötött óraszámát, így
+folyamatosan nyomonkövetjetjük az óraszámok alakulását.
+
+=== A tankörök állapota ===
+
+Egy tankör háromnféle állapotban lehet, s ezt a nevét tartalmazó cella alsó szegélyének színe jelzi:
+ - a **piros** jelzi, ha a tankörnek még nincs kijelölt tanára
+ - a **zöld** jelzi, ha a tankörhöz //pontosan egy// tanár van hozzárendelve
+ - végül **sárga** jelzést kap az a tankör, amelyhez több tanárt is hozzárendeltünk.
+
+A program megengedi, hogy egy tankörnek több tanára is legyen, ez tehát nem hiba, hanem lehetőség, amit gyakorlatban csak igen ritkán célszerű használni.
+Ilyen esetben a program a tankör óraszámát elosztja a megjelölt tanárok között. Több tanáros tankör felvételére kizárólag olyan esetben lehet szükség, ha a tanév
+során az órarendbe előre nem rögzíthető időpontokban váltják egymást a tanárok - pl. egy ha egy nyelvi lektor több csoportot látogat, hol egyikbe, hol másikba megy be
+órát tartani az igényeknek megfelelően.
+
+=== A tanár állapota ===
+
+A tanárok a lekötött és kötelező óraszámuk viszonányt tekintve szintén háromféle állapotban lehetnek, melyet ez esetben is különbözű színű és elhelyezkedésű szegélyek
+jelölnek. A program egy állítható (alapértelmezetten 2-2 óra) - a kötelező óraszámtól számított - "türelmi sávban" zölddel jelöli a tanárt, a megadott alsó határ alatt
+kékkel, felette pirossal szegélyezi az óraszám celláját.
+
+A sávhatárokat a státusz soron lehet állítani.
+
+
+====== TODO ======
+
+T-T hozzárendelés
+ - előző éviek felvétele (init) ~ ok
+ - szűrés - több mk/osztály...
+ - szűrés - ami már kész eltűnik (tanár/tankör)
+ - látszódjon, hogy hány/hány van meg (óraszám tankör/tanár)
+ - th-k rögzítése
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tanusitvany.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tanusitvany.txt
new file mode 100644
index 00000000..50674c5f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/tanusitvany.txt
@@ -0,0 +1,48 @@
+==== Valid cert létrehozása ====
+A napló a https kapcsolathoz saját certificate-et készít, de azt a böngészők nem fogadják el. (A Firefox-szal ugyan meg lehet jegyeztetni, de hosszú távon mindenképp érdemes "zöld" tanúsítványra váltani.)
+Ilyen tanúsítványokat lehet venni is, most az ingyenesek közül mutatunk be egyet. Ennek hátránya, hogy 90 naponta újítani kell, de erre van automata megoldás... :-)
+Kérdezzük le a naplót futtató gépen a disztribúciót!
+ # cat /etc/issue
+És biztos, ami biztos, a hostnevet is:
+ # hostname
+A kapott eredmények alapján [[https://letsencrypt.org/|ezen]] az oldalon leírtak alapján kell eljárni.
+Válasszuk a **Get Started** gombot, ami átvisz a [[https://certbot.eff.org/|certbot]] oldalra. Célszerű itt a **With Shell Access** (Certbot ACME client) részt választani. A szoftver (példánkban apache) disztribúció (példánkban Debian jessie) választása után (angol nyelven) részletes leírásra jutunk.
+
+**FIGYELEM! 2018. szeptemberben a Let'sEncrypt már nem támogatja a Debian Jessie-t, így a leírás egyes részei elavultak lehetnek! Az elvi megoldás a Sterch (és más) verziók esetén azonban ugyanez!**
+
+A telepítés, beállítás viszonylag egyszerű, ám naná, hogy van trükközés benne...! :-)
+
+Elsőként szerkesszük meg a ///etc/apt/sourses.list// állományt (mert a kíván backports repo alapból senkinek sincs benne)!
+ # nano /etc/apt/sources.list
+Adjuk hozzá:
+ deb http://ftp.debian.org/debian jessie-backports main
+Mentsük, és frissítsük a listát:
+ # apt-get update
+Most már lehet telepíteni:
+ # apt-get install python-certbot-apache -t jessie-backports
+Jöhet a tényleges munka:
+ # certbot --apache
+A parancs kiadása után az értelmes kérdésekre adjunk értelmes válaszokat (hostname, email, stb.)!
+
+A futás során egy piros hibaüzenetet látunk, nem is fog működni még a tanúsítvány:
+ Cannot find a cert or key directive in /files/etc/apache2/sites-available/mayor.conf/VirtualHost. VirtualHost was not modified!
+Nem kell megrémülni, a létrehozott **pem** állományok helyét kell csak megmagyarázni a MaYoR-nak, és kész is vagyunk! A **pem**-ek a ///etc/letsencrypt/archive/yeti.szag.hu// könyvtárba kerültek (mert yeti.szag.hu a példa-hostnév), de a ///etc/letsencrypt/live/yeti.szag.hu// alatt mindig van rá symlink... (Ennek később látjuk hasznát!)
+Szerkesszük a webszerver mayor.conf állományát!
+ # nano /etc/apache2/sites-available/mayor.conf
+Kommentezzük ki az eredeti apache.pem-et tartalmazó sort (az elejére tett #-kal):
+ SSLCertificateFile /etc/apache2/ssl/apache.pem
+helyett
+ # # SSLCertificateFile /etc/apache2/ssl/apache.pem
+legyen és értelemszerűen ebbe a szekcióba vegyünk fel két sort:
+ SSLCertificateFile /etc/letsencrypt/live/yeti.szag.hu/fullchain.pem
+ SSLCertificateKeyFile /etc/letsencrypt/live/yeti.szag.hu/privkey.pem
+Mentsük az állományt, majd indítsuk újra a webszervert!
+ # service apache2 restart
+Minden böngészőben zöld lakatnak kell fogadnia minket!
+
+**FONTOS!** A tanúsítvány csak erre a hostnévre érvényes, ha a (külső vagy belső) IP-címmel próbálkozunk (esetleg a belső hálózatból másik hostnévvel), ugyanúgy nem biztonságos kapcsolatot kapunk!
+Ez a tanúsítvány 90 napig érvényes, a megadott email-címre kapunk majd figyelmeztető üzenetet a lejárat előtt. Ilyenkor kell futtatni a megújításhoz szükséges parancsokat:
+ # certbot renew --dry-run
+Ha ez megfelelően működik, akkor lehet automatizálni cron vagy systemd segítségével:
+ # certbot renew
+Ha sikeresen megkaptuk az újabb 90 napra szóló tanúsítványt, akkor csak a webszervert kell újraindítani, és minden megy tovább...
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/targy_atnevezes.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/targy_atnevezes.txt
new file mode 100644
index 00000000..9d2c6bfd
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/targy_atnevezes.txt
@@ -0,0 +1,102 @@
+
+====== Tárgyak átnevezése ======
+
+Előfordul néha, hogy az év során kiderül, hogy az eredetileg felvett tárgynevek nem jók, módosítani kell őket. Például nyomtatáskor kiderül, hogy
+túl hosszúra sikerültek és nem férnek be a megfelelő cellákba, vagy az adott tárgy hivatalos megnevezése más, mint amit mi felvettünk.
+
+Erre a feladatra a felületen nincs lehetőség - nem támogatjuk a tárgyak utólagos átnevezését. Ha mindenképp szükség van rá, akkor SQL szinten kell
+megoldanunk a feladatot.
+
+**Figyelem!**
+Már kinyomtatott, hitelesített napló esetén nem szabad visszamenőleg módosítani a tankörök neveit! A tárgy átnevezése sem szerencsés, helyette felvehetünk új
+tárgyat és módosíthatjuk az érintett tankörök tárgyhoz rendelését. Mindenesetre gondoljuk meg mit csinálunk, mielőtt nekiesünk.
+
+===== Tárgy átnevezés =====
+
+Az intézményi adatbázisban található tárgy táblában vannak a tárgyak adatai. Ha például a ''számítástechnika'' tárgyat ''informatika'' névre szeretnénk cserélni,
+a következő SQL utasítást használhatjuk:
+
+ mysql> UPDATE targy SET targyNev = 'informatika' WHERE targyNev = 'számítástechnika';
+
+Ezzel azonban nem vagyunk kész, hisz a tárgyhoz tartozó tankörök nevei ettől még nem változnak meg.
+
+===== Tankörök átnevezése =====
+
+A tankörök átnevezésének egyik módja, ha a felületen a ''Napló/Intézményi adatok/Tankörök'' menüpont alatt kiválasztjuk az imént módosított tárgyat, majd
+végigmegyünk a hozzá tartozó tankörökön és módosítás nélkül megnyomjuk az ''OK'' gombot. Ekkor a tankör adatai, paraméterei nem változnak meg, de a nevét
+újragenerálja a redszer - immár az új tárgynevet használja.
+
+Másik lehetőség, hogy SQL szinten oldjuk meg a feladatot - jóval hatékonyabb módszer, de könnyebb hibázni is vele. Az előző példát folytatva szeretnénk tehát
+átnevezni a számítástechnika tanköröket informatikára, de csak a 2008-as tanévhez tartozókat (visszamenőleg nem módosítunk). Ehhez a megfelelő tanév
+adatbázisában a következő SQL parancsot adjuk ki:
+
+ mysql> UPDATE tankorSzemeszter SET targyNev = REPLACE(targyNev,'számítástechnika','informatika') WHERE tanev = 2008;
+
+Így egy lépésben végeztünk is a módosítással.
+
+====== Egy összetettebb példa ======
+
+Az életből merített példa szerin év elején túl hosszú tárgyneveket adtunk meg, amik nyomtatáskor nem férnek el rendesen. Például:
+
+ - ''Tehetséggondozás - Szakkör - Környezetvédelmi és természetjáró'', vagy
+ - ''Egyéni fejlesztés - Felzárkóztatás - Tantárgyi alapkészség fejlesztés - Digitális informatikai alapismeretek '', stb.
+
+Úgy szeretnénk rövidíteni a neveken, hogy bizonyos ismétlődő részeket (pl. Tehetséggondozás, vagy
+Egyéni fejlesztés - Felzárkóztatás - Tantárgyi alapkészség fejlesztés) megfelelő rövidítésekre szeretnénk cserélni (pl. TG, illetve EF-F-TAF).
+Lássuk ennek egy lehetséges módját:
+
+1. Létrehozok egy ideiglenes táblát, amibe előkészítem, hogy melyik tárgynevet mire fogom javítani:
+
+ CREATE TABLE _atnevez (targyId SMALLINT UNSIGNED, targyNev VARCHAR(128), ujNev VARCHAR(128)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_hungarian_ci;
+
+2. Feltöltöm ezt a táblát.
+
+2.a Ennek sok módja lehet.
+
+Lekérdezhetem az összes targyId, targyNev párost a targy táblából
+
+ SELECT targyId,targyNev FROM targy INTO OUTFILE '/tmp/atnevez.txt';
+
+majd szövegszerkesztőben/táblázatkezelőben mellé írhatom az ujNev oszlopot, végül betölthetem a táblába az elkészült állományt:
+
+ LOAD DATA INFILE '/tmp/atnevez.txt' INTO TABLE _atnevez;
+
+Az adatbetöltéshez használhatom a ''Napló/Admin/Import'' menüpontot is.
+
+2.b Közvetlenül a ''targy'' táblából is lehet lekérdezéssel feltölteni lépésenként a táblát. Például, ha a ''Tehetséggondozás''-t ''TG''-re akarom minden érintett
+névben cserélni, akkor:
+
+ INSERT INTO _atnevez SELECT targyId,targyNev,replace(targyNev,'Tehetséggondozás','TG') AS ujNev FROM targy WHERE targyNev LIKE 'Tehetséggondozás%';
+
+illetve az ''Egyéni fejlesztés - Felzárkóztatás - Tantárgyi alapkészség fejlesztés'' lecserélendő ''EF-F-TAF''-re:
+
+ INSERT INTO _atnevez SELECT targyId,targyNev,replace(targyNev,'Egyéni fejlesztés - Felzárkóztatás - Tantárgyi alapkészség fejlesztés','EF-F-TAF') AS ujNev FROM targy
+ WHERE targyNev LIKE 'Egyéni fejlesztés - Felzárkóztatás - Tantárgyi alapkészség fejlesztés%';
+
+És így tovább, ha van több módosítandó név. Ilyen módszerrel akkor lehet gond, ha egy névre két átalakítás is vonatkozik.
+
+3. Ellenőrzöm, hogy minden hosszú targyNev-hez van-e ujNev beírva a táblába. Ha például 50 karakter feletti tárgyneveket nem akarok meghagyni, akkor így listázhatom ki, hogy miknek __nincs__ még új neve:
+
+ SELECT * FROM targy LEFT JOIN _atnevez USING (targyId) WHERE ujNev IS NULL AND LENGTH(targy.targyNev) > 50;
+
+4. Konvertáljuk először a tankörök neveitT Első körben lekérdezhetem, hogy mi lesz az új név - nem lehet elégszer ellenőrizni:
+
+ SELECT tankorId,tankorNev,REPLACE(tankorNev,targyNev,ujNev) AS ujTankorNev FROM tankor LEFT JOIN tankorSzemeszter USING (tankorId) LEFT JOIN _atnevez USING (targyId) WHERE ujNev IS NOT NULL;
+
+Ha jónak tűnik, akkor mehet a módosítás:
+
+ UPDATE tankor LEFT JOIN tankorSzemeszter USING (tankorId) LEFT JOIN _atnevez USING (targyId) SET tankorNev = REPLACE(tankorNev,targyNev,ujNev) WHERE ujNev IS NOT NULL;
+
+5. Ez után jöhet a tantárgy nevek konvertálása. Itt is először lekérdezzük a tervezett módosításokat:
+
+ SELECT * FROM targy LEFT JOIN _atnevez USING (targyId) WHERE ujNev IS NOT NULL;
+
+Ha jónak tűnik, mehet a módosítás:
+
+ UPDATE targy LEFT JOIN _atnevez USING (targyId) SET targy.targyNev = ujNev WHERE ujNev IS NOT NULL;
+
+6. Ha minden jó, akkor az ideiglenesen létrehozott táblát törölhetjük:
+
+ DROP TABLE _atnevez;
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-debian.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-debian.txt
new file mode 100644
index 00000000..1dcc7fe9
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-debian.txt
@@ -0,0 +1,33 @@
+====== Telepítés ======
+
+A továbbiakban a Debian rendszerre való telepítés lépéseit követjük.
+
+==== Telepítőkészlet ====
+
+Ha olyan helyen telepítjük a rendszert, ahol lehetőségünk van a hálózat elérésére, akkor a rendszerünknek megfelelő Debian
+netinst-* telepítőt válasszuk.
+
+Ez letölthető, majd CD-re írás után indíthatjuk is róla a rendszert. Más linux terjesztések esetén is hasonló lehetőségeink
+vannak a telepítő készletek beszerzésére.
+
+==== Partíciók ====
+
+A nyelv és billentyűzet beállítása után az első igazán komoly - talán legfontosabb - lépés a partíciók kialakítása. A partíciók kialakításához pár szempont:
+ * A ''swap'' terület legyen legalább a fizikai memóriával megegyező méretű
+ * A ''/usr'' számára nem kell túl sok hely, hisz igyekszünk majd csak a ténylegesen szükséges csomagokat telepíteni.
+ * A ''/var'' tartalmazza majd a MaYoR rendszer állományait. Ez nem túl nagy, de hosszabb távon például a generált PDF állomáőnyok, illetve az egyre növekvő adatbázisok számára kell hely.
+ * Valamelyik partíción (pl. ''/home'', vagy külön erre a célra létrehozott ''/backup'') legyen elég hely a rendszeres (lehetőleg napi) menések tárolására. A biztonságot növelhetjük azzal, ha egy másik helyi meghajtóra is mentjük az állományokat, vagy egy másik munkaállomásra is átmásoljuk őket.
+
+
+==== Az alaprendszer telepítése ====
+
+Mikor a telepítő eljut a telepítendő szoftver-komponensek kiválasztásához, akkor AZ ÖSSZES KIJELÖLÉST SZÜNTESSÜK MEG! Csak az alaprendszerre lesz szükség, meg arra a néhány csomagra, amit alább felsorolunk. Minden további csomag felesleges, csak egy esetleges biztonsági rés lehetőségét hordozza magában.
+
+==== A /etc/apt/sources.list kiegészítése ====
+
+A szükséges csomagok telepítéséhez fel kell vennünk a ''contrib'' és ''non-free'' tárolókat is a ''/etc/apt/sources.list'' állományba:
+
+ deb http://ftp.debian.org/debian/ wheezy main contrib non-free
+ deb-src http://ftp.debian.org/debian/ wheezy main contrib non-free
+
+Ezek után indulhat a telepítés. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-hw.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-hw.txt
new file mode 100644
index 00000000..4f92e967
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-hw.txt
@@ -0,0 +1,15 @@
+====== Telepítés ======
+
+===== Hardver =====
+
+A rendszernek nincs különösebben nagy hardverigénye, inkább azt érdemes szem előtt tartani, hogy stabil, megbízható gépet válasszunk. Mindenképp javasoljuk, hogy a MaYoR elektronikus adminisztrációs rendszert külön szerverre kerüljön - így könnyebb biztosítani az adatok védelmét.
+
+Példaként néhány már telepített konfiguráció:
+
+ * HP Proliant ML110, Pentium 4 (3.2GHz), 2 GB RAM, 2x80 GB SATA HDD, Intel Gbit + Realtek Gbit ethernet\\
+Partíciók: swap/2x1GB, / 1GB/single, /tmp 1 GB/single, /usr 10GB/1, /var 10GB/1, /home/58GB/1
+ * HP Proliant ML115, Dual-Core AMD Opteron (1800MHz), 1 GB RAM, 160 GB HDD\\
+Partíciók: / 265MB, /home/143GB, /tmp 400MB, /usr 5GB, /var 3 GB
+ * DELL PowerEdge SC440, Intel Core2 Duo (2.2GHz), 2x160GB HDD, 1 GB, Gbit ethernet\\
+Partíciók: 40MB DELL utility, 2GB swap, 1GB /boot, 2GB /, 2GB /tmp, 10 GB /usr, 20GB /var, 123GB /home
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-man.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-man.txt
new file mode 100644
index 00000000..542f3ba2
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites-man.txt
@@ -0,0 +1,521 @@
+====== Manuális telepítés ======
+
+==== Az első indítás után ====
+
+A telepítendő szoftverek listája (vagy ezek megfelelői):
+ - ''apache2'' - a web szerver (más webszerver is szóbajöhet természetesen)
+ - ''php5'', ''php5-mysql'', ''php5-ldap'' (ez utóbbi csak akkor, ha ''ldap'' háttéradatbázist használunk a felhasználók azonosítására)
+ - ''mysql-server-5.0'' - A keretrendszer és a napló adatait tároló adatbázis szerver
+ - ''recode'' - a nyomtatványok előállításakor használjuk a különböző kódolások közötti konverzióra
+ - ''texlive'', ''texlive-plain-extra'', ''texlive-fonts-extra'', ''texlive-fonts-recommended'', ''texlive-lang-hungarian'', ''texlive-latex-extra'', ''cm-super'' - TeX keretrendszer, fontok, makro csomagok
+ - ''texlive-xetex'', ''ttf-mscorefonts-installer'' - opcionális (ha a haladási napló nyomtatásához a XeTeX rendszert akarjuk használni)
+ - ''gs-common''/''ghostscript'' - a nyomtatáshoz szükséges ps2pdf programot tartalmazzó csomag
+ - ''ntp'' - a pontos idő karbantartásához, a munkamenetek lejárati idejének kezeléséhez
+ - ''wget'' - a frissítések letöltéséhez
+ - ''ssl-cert'' - ha saját tanúsítványt akarunk készíteni a web-szerver számára
+ - ''ssh'' - a távoli adminisztráció lehetőségét biztosító szolgáltatás
+
+=== Debian/Ubuntu ===
+
+Belépés után szerkesszük a csomag-források listáját és kommentezzük ki a telepítő CD-re és a forrásokra (src) vonatkozó sorokat:
+
+ editor /etc/apt/sources.list
+
+Majd frissítsük a csomaglistát (ezzel egyúttal ellenőrizzük, hogy nem rontottunk-e el valamit ''sources.list'' állományban)
+
+ apt-get update
+
+És telepítsük a szükséges csomagokat:
+
+ apt-get install apache2 php5 php5-mysql php5-ldap mysql-server-5.0 recode texlive ... ssh ssl-cert ntp
+
+Ez 3-400MB letöltését jelenti, majd a csomagkezelő telepíti a szoftvereket.
+
+=== SuSE ===
+
+A csomagok telepítésére itt a ''yast'' használatos:
+
+ yast2 -i mc gpm apache2 php5 php5-mysql php5-ldap mysql-server-5.0 recode texlive subversion less ssh php5-mbscript
+
+Az ''ssl-cert'' helyett a ''gensslcert'' programot kell használnunk - a működése lényegében teljesen megegyezik a "debianos" ''ssl-cert''-el.
+
+=== freeBSD ===
+
+A telepítés után tegyünk fel GNU bash-t, mert a frissítő szkriptek ezt igénylik majd, ráadásul a ''/bin/bash'' útvonalon, így ha nem ott lenne, akkor készítsűnk
+szimolikus linket!
+
+Szintén a frissítésekhez szükség lesz egy ''md5sum'' nevű szkriptre, ami a linux-ok alatt használatos hasonló nevű alkalmazást helyettesíti
+(pontosabban az ''md5sum -c --status'' alakú hívását):
+
+ #!/bin/bash
+
+ read inputline
+
+ md5sum=`(echo $inputline | cut -d" " -f1)`
+ filename=`(echo $inputline | cut -d" " -f2)`
+ md5sum_new=`(md5 $filename | tr -d " " | cut -f2 -d=)`
+
+ if [ $md5sum = $md5sum_new ]; then
+ exit 0
+ else
+ exit 1
+ fi
+
+Ezt a szkriptet helyezzük el valahova a keresési útvolaban lévő könyvtárba.
+
+Utána tegyük fel a felsoroltaknak megfelelő csomagokat... Legnagyobb gondot várhatóan a texlive kiváltása fogja okozni, mert freeBSD-re
+csak a korábbi tetex rendszer létezik.
+
+(Aki tud pontosabb leírást, az bátran küldje le a support-ra)
+
+===== MaYoR rendszer telepítése =====
+
+Szedjük le a MaYoR keretrendszer és napló forrását:
+
+ cd /tmp
+ wget http://www.mayor.hu/download/current/mayor-base-current.tgz
+ wget http://www.mayor.hu/download/current/mayor-naplo-current.tgz
+
+Majd csomagoljuk ki őket közös könyvtárba (pl ''/var/mayor'')
+
+ mkdir /var/mayor
+ cd /var/mayor/
+ tar xvfz /tmp/mayor-base-current.tgz
+ tar xvfz /tmp/mayor-naplo-current.tgz
+
+Végül ellenőrizzük, hogy a ''/var/mayor/log/mayor-base.rev'' állományba az aktuális revision szám található-e! Ha valamilyen okból nem, akkor kérj segítséget a support@mayor.hu-n!
+
+
+==== Konfigurációs állományok ====
+
+A MaYoR rendszer konfigurációs állományait a ''/var/mayor/config'' könyvtárban lévő ''*.example'' állományok átnevezésével és szerkesztésével kapjuk.
+
+ mv /var/mayor/config/main-config.php.example /var/mayor/config/main-config.php
+ editor /var/mayor/config/main-config.php
+
+Ebben az állományban adhatjuk meg a ''_SITE'' stringet, ami a HTML oldalak ''title'' mezőjében fog megjelenni (általában az intézmény neve), érdemes megváltoztatni a ''_MYSQL_ENCODE_STR'' konstanst, amit a jelszavak kódolásához használunk, valamint a keretrendszer adatbázisának eléréséhez szükséges jelszót - ezt csak a program használja, így bátran adjunk meg akármilyen össze-vissza karaktersort!
+
+ define('_SITE','MaYoR Használó Gimnázium');
+
+ define('_MAYOR_DIR','/var/mayor');
+ define('_BASEDIR',_MAYOR_DIR.'/www');
+ define('_CONFIGDIR',_MAYOR_DIR.'/config');
+ define('_LOGDIR',_MAYOR_DIR.'/log');
+ define('_LOCKFILE','/var/run/mayor.lock');
+ define('_DATADIR',_MAYOR_DIR.'/data');
+ define('_DOWNLOADDIR',_MAYOR_DIR.'/download');
+
+ // --- Jelszó kódolt tárolásához ----------------------------------------//
+ define('_MYSQL_ENCODE_STR','___________');
+
+ $MYSQL_DATA['login']['db'] ='mayor_login';
+ $MYSQL_DATA['login']['user']='mayor_login';
+ $MYSQL_DATA['login']['pw'] ='___________';
+ ...
+
+Következnek az egyes hozzáférési szintek (policy) beállításai. A "parent" és "public" policy beállításaiban elég csak a jelszavakat módosítani (az előzőekhez hasonlóan), míg a "private" hozzáférési szint esetén - hacsak nem LDAP alapú azonosítást szeretnénk - még néhány paramétert módosítunk:
+
+''parent-conf.php'', ''public-conf.php'' - csak a jelszavakat írjuk át
+
+ mv /var/mayor/config/parent-conf.php.example /var/mayor/config/parent-conf.php
+ editor /var/mayor/config/parent-conf.php
+ ...
+ mv /var/mayor/config/public-conf.php.example /var/mayor/config/public-conf.php
+ editor /var/mayor/config/public-conf.php
+ ...
+ mv /var/mayor/config/private-conf.php.example /var/mayor/config/private-conf.php
+ editor /var/mayor/config/private-conf.php
+
+ ...
+ //'backend' => 'ldap',
+ 'backend' => 'mysql',
+ ...
+
+ //'ldap hostname' => 'localhost',
+ //'ldap protocol version' => 3,
+ //'ldap base dn' => 'o=mayor,c=hu',
+ //'createAccountScript' => 'accounts.sh'
+
+ 'mysql db' => 'mayor_private',
+ 'mysql user' => 'mayor_private',
+ 'mysql pw' => '________'
+ ...
+
+=== A napló modul konfigurációja ===
+
+Készítsük el a minta alaján saját konfigurációs állományunkat:
+
+ mv /var/mayor/config/module-naplo/config.php.example /var/mayor/config/module-naplo/config.php
+ editor /var/mayor/config/module-naplo/config.php
+
+Szerkesztéskor a legfontosabb itt is a jelszavak megváltoztatása.
+
+Majd szintén a minták alapján készítsük el saját intézmény konfigurációs állományunkat ''config-[intézmény rövid neve].php'' néven
+(itt az ''[intézmény rövid neve]'' meg kell egyezzen a felületen később megadandó rövid névvel - lásd:
+[[hogyan:telepites#uj_intezmeny_felvetele|Új intézmény felvétele]] - például: ''vmg'', ''illyes'', ''toldy''...):
+
+ mv /var/mayor/config/module-naplo/config-pl.php.example /var/mayor/config/module-naplo/config-[intézmény rövid neve].php
+ editor /var/mayor/config/module-naplo/config-[intézmény rövid neve].php
+
+Ebben az állományban hangolhatjuk a rendszert határidőkkel és egyéb korlátozásokkal...
+
+Van még egy konfigurációs állomány, ami a javascript függvénykönyvtárak betöltését szabályozza, ezen szerkesztenünk nem szükséges:
+
+ mv /var/mayor/config/skin-classic/naplo-config.php.example /var/mayor/config/skin-classic/naplo-config.php
+
+==== MySQL beállítása ====
+
+=== SuSE ===
+SuSE alatt a szolgáltatások indítását és a fontosabb beállításokat célszerű a ''yast'' segítségével végezni. Az adatbázisok létrehozása már nem rendszerfüggő, az a Debin/Ubuntu leírás szerint történhet.
+
+=== Debian/Ubuntu ===
+A telepítés után ne felejtsük el a MySQL root jelszavát megváltoztatni!
+
+ # mysql
+ Welcome to the MySQL monitor. Commands end with ; or \g.
+ Your MySQL connection id is 8
+ Server version: 5.0.32-Debian_7etch5-log Debian etch distribution
+
+ Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
+
+ mysql> SET PASSWORD=PASSWORD('*****');
+ Query OK, 0 rows affected (0.00 sec)
+
+Majd az UTF-8 kódolás beállítása következik:
+
+ cp /var/mayor/install/base/mysql/utf8.cnf /etc/mysql/conf.d/utf8.cnf
+
+Az ''utf8.cnf'' állomány a következőket tartalmazza:
+
+ [client]
+ default-character-set = utf8
+
+ [mysqld]
+ default-character-set = utf8
+ default-collation = utf8_hungarian_ci
+
+Ne felejtsük el a szervert újraindítani a beállítások mósosítása után!
+
+ /etc/init.d/mysql restart
+
+=== A keretrendszer adatbázisainak létrehozása ===
+
+Az adatbázisok létrehozásához a MaYoR rendszer könyvtárában találunk minta állományokat. Ezekben legfeljebb az adatbázisok nevét és a jelszavakat kell majd módosítani.
+
+A ''mayor-login.sql''-ben ''%MYSQL_LOGIN_DB%''-t, ''%MYSQL_LOGIN_USER%''-t és ''%MYSQL_LOGIN_PW%''-t cseréljük
+a ''/var/mayor/config/main-config.php''-ban megadott adatbázis, user, jelszó hármasra.
+
+A ''mayor-auth.sql''-ből készítsünk ''mayor-parent.sql'' néven másolatot, melyben a
+''%MYSQL_AUTH_DB%''-t, ''%MYSQL_AUTH_USER%''-t és ''%MYSQL_AUTH_PW%''-t cseréljük
+a ''/var/mayor/config/parent-conf.php''-ben megadottakra.
+
+Végül hasonlóan készítsünk a ''mayor-auth.sql''-ből ''mayor-private'' néven másolatot, melyben a
+''%MYSQL_AUTH_DB%''-t, ''%MYSQL_AUTH_USER%''-t és ''%MYSQL_AUTH_PW%''-t cseréljük
+a ''/var/mayor/config/private-conf.php''-ben megadottakra.
+
+Lehet simán editorral végezni a szerkesztéseket, de aki jobban szereti a shell parancsokat, így is eljárhat:
+
+ mkdir /tmp/mysql
+ cd /tmp/mysql
+ DB=`grep db /var/mayor/config/main-config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+ USER=`grep user /var/mayor/config/main-config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+ PW=`grep pw /var/mayor/config/main-config.php | sed -e "s/$.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+ cat /var/mayor/install/base/mysql/mayor-login.sql | sed -e "s/%MYSQL_LOGIN_DB%/$DB/g" -e "s/%MYSQL_LOGIN_USER%/$USER/g" \
+ -e "s/%MYSQL_LOGIN_PW%/$PW/g" > mayor-login.sql
+
+ DB=`grep db /var/mayor/config/parent-conf.php | sed -e "s/^.*>\ *['|\"]//g" -e "s/['|\"],//g"`
+ USER=`grep user /var/mayor/config/parent-conf.php | sed -e "s/^.*>\ *['|\"]//g" -e "s/['|\"],//g"`
+ PW=`grep pw /var/mayor/config/parent-conf.php | sed -e "s/^.*>\ *['|\"]//g" -e "s/['|\"],//g"`
+ cat /var/mayor/install/base/mysql/mayor-auth.sql | sed -e "s/%MYSQL_AUTH_DB%/$DB/g" -e "s/%MYSQL_AUTH_USER%/$USER/g" \
+ -e "s/%MYSQL_AUTH_PW%/$PW/g" > mayor-parent.sql
+
+ DB=`grep db /var/mayor/config/private-conf.php | sed -e "s/^.*>\ *['|\"]//g" -e "s/['|\"],//g"`
+ USER=`grep 'mysql user' /var/mayor/config/private-conf.php | sed -e "s/^.*>\ *['|\"]//g" -e "s/['|\"],//g"`
+ PW=`grep pw /var/mayor/config/private-conf.php | sed -e "s/^.*>\ *['|\"]//g" -e "s/['|\"],//g"`
+ cat /var/mayor/install/base/mysql/mayor-auth.sql | sed -e "s/%MYSQL_AUTH_DB%/$DB/g" -e "s/%MYSQL_AUTH_USER%/$USER/g" \
+ -e "s/%MYSQL_AUTH_PW%/$PW/g" > mayor-private.sql
+
+Mindenképp ellenőrizzük, hogy a keletkezett állományok jók lettek-e, a jelszavak, azonosítók, adatbázis nevek megfelelők-e.
+Ezek után létrehozzuk az adatbázisokat:
+
+ cat /tmp/mysql/mayor-login.sql | mysql -p
+ cat /tmp/mysql/mayor-parent.sql | mysql -p
+ cat /tmp/mysql/mayor-private.sql | mysql -p
+
+=== A napló modul adatbázisának létrehozása ===
+
+Az előzőekhez hasonlóan itt is egy meglévő minta állomány segítségével hozzuk létre az adatbázist, melyben kicseréljük a
+''%MYSQL_NAPLO_DB%'', ''%MYSQL_NAPLO_USER%'', ''%MYSQL_NAPLO_PW%'', ''%MYSQL_NAPLO_USER_READ%'', %MYSQL_NAPLO_PW_READ%
+paramétereket a ''/var/mayor/config/module-naplo/config.php'' megfelelő értékeire - editorral, vagy valahogy így:
+
+ DB=`grep db /var/mayor/config/module-naplo/config.php | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+ USER=`egrep 'userWrite.*=' /var/mayor/config/module-naplo/config.php | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+ USERREAD=`egrep 'userRead.*=' /var/mayor/config/module-naplo/config.php | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+ PW=`egrep 'pwWrite.*=' /var/mayor/config/module-naplo/config.php | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+ PWREAD=`egrep 'pwRead.*=' /var/mayor/config/module-naplo/config.php | sed -e "s/^.*=\ *['|\"]//g" -e "s/['|\"];//g"`
+
+ cat /var/mayor/install/module-naplo/mysql/base.sql | sed -e "s/%MYSQL_NAPLO_DB%/$DB/g" -e "s/%MYSQL_NAPLO_USER%/$USER/g" \
+ -e "s/%MYSQL_NAPLO_PW%/$PW/g" -e "s/%MYSQL_NAPLO_USER_READ%/$USERREAD/g" \
+ -e "s/%MYSQL_NAPLO_PW_READ%/$PWREAD/g" > /tmp/mysql/base.sql
+
+Ellenőrizzük az elkészült állományt, majd hozzuk léttre az adatábázist:
+
+ cat /tmp/mysql/base.sql | mysql -p
+
+
+==== A szükséges csoportok és a mayoradmin account létrehozása ====
+
+Ehhez a lépéshez is tartoznak előkészített sql állományok. Először létrehozzuk a mayoradmin felhasználót (induló jelszava 'jelszo') és az
+alaprendszer csoportjait, majd a naplóhoz tartozó csoportokat. Az állományoban a ''%MYSQL_PRIVATE_DB%'' sztringet cseréljük ki a
+''/var/mayor/config/private-conf.php'' állományban megadott adatbázis névre.
+
+ DB=`grep db /var/mayor/config/private-conf.php | sed -e "s/^.*>\ *['|\"]//g" -e "s/['|\"],//g"`
+ cat /var/mayor/install/base/mysql/private-users.sql | sed -e "s/%MYSQL_PRIVATE_DB%/$DB/g" > /tmp/mysql/private-users.sql
+ cat /tmp/mysql/private-users.sql | mysql -p
+
+ cat /var/mayor/install/module-naplo/mysql/naplo-users.sql | sed -e "s/%MYSQL_PRIVATE_DB%/$DB/g" > /tmp/mysql/naplo-users.sql
+ cat /tmp/mysql/naplo-users.sql | mysql -p
+
+==== Az Apache Web-szerver beállításai ====
+
+=== SuSE ===
+
+Az Apache2 alapvető konfigurálása és a szolgáltatás elindítása továbbra is a ''yast''-al történik, sőt a megfelelő virtual host létrehozására is van lehetőség, de a megfelelő konfigurációs állományok szerkesztése is jó, univerzális megoldás, mindegyik rendszeren működnie kell.
+
+=== Debian/Ubuntu ===
+
+Először az Apache2 ssl támogatását kell beállítanunk:
+
+ mkdir /etc/apache2/ssl
+ make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
+ a2enmod ssl
+ a2enmod rewrite
+
+A make-ssl-cert feltesz majd néhány egyszrű kérdést - de ettől ne hátráljunk meg...
+A MaYoR-t használó intézmények számára kérésre mi is készítünk [[gyik:mayorCA|általunk (MaYoR Hungary) hitelesített]] tanúsítványt.
+
+Ezek után a MaYoR rendszer site információit állítsuk be - a letöltött minta másolatának értelemszerű szerkesztésével:
+
+ cp /var/mayor/install/base/apache2/mayor /etc/apache2/sites-available
+ editor /etc/apache2/sites-available/mayor
+
+Itt a szerver nevére, a portra (alapértelmezett: 443) és az előbb generált SSLCertificateFile elérési útjára kell különösen figyelni.
+
+Majd a default site-ban állítsuk be, hogy csak a 80 porton legyen érvényes (de akár le is tilthatjuk):
+
+ editor /etc/apache2/sites-available/default
+
+ NameVirtualHost *:80
+ <virtualhost *:80>
+
+Esetleg irányítsuk át a 80-as port forgalmát a 443-as portra:
+
+ RedirectMatch ^.*$ https://your.mayor.server.hu/
+
+Beállítjuk, hogy a web-szerver a 443-as (https) porton is figyeljen:
+
+ editor /etc/apache2/ports.conf
+
+ Listen 443
+
+Végül engedélyezzük a mayor site-ot és indítsuk újra a web szervert:
+
+ a2ensite mayor
+ /etc/init.d/apache2 restart
+
+Ide tartozik még a php5 modul konfigurációja. Az alapbeállításokhoz képest elég egy helyen módosítani a ''/etc/php5/apache2/php.ini'' állományt:
+
+ editor /etc/php5/apache2/php.ini
+
+ memory_limit = 128M ; Maximum amount of memory a script may consume (16MB)
+
+ /etc/init.d/apache2 reload
+
+A memória limitet a nagyobb lekérdezések miatt kell megnövelni - ilyen például a haladási vagy osztályozó naplók nyomtatása.
+
+
+==== Karbantartást segítő szkriptek ====
+
+Egy egyszerű shell scriptet használhatunk a rendszer frissítésére (''update'') és mentésére (''backup''). Készítsünk először szimbólikus linket, hogy parancssorból könnyen elérhető legyen a szkript:
+
+ ln -s /var/mayor/bin/mayor /usr/local/sbin
+
+Majd készítsünk saját konfigurációs állományokat a mentési és frissítési feladatokhoz:
+
+ cp /var/mayor/config/main.conf.example /var/mayor/config/main.conf
+ chmod 600 /var/mayor/config/main.conf
+ editor /var/mayor/config/main.conf
+ ...
+
+Itt adhatjuk meg a mentési könyvtárat, illetve a MySQL adatbázisok mentéséhez és az adatbázis frissítések elvégzéséhez szükséges
+felhasználói azonosítót és jelszót (dump készítéshez legyen joga és a frissítendő adatbázisokon teljes jogosultságú felhasználó legyen!).
+A frissítéssel kapcsolatban beállíthatjuk, hogy mely modulokat frissítsen a parancs (alapértelmezés szerint: mayor-base, mayor-naplo).
+
+A frissítés a ''/var/mayor/log/revision'' állományból tudja, hogy a rendszer épp melyik változaton áll, így ennek kezdeti értékét is be kell állítani.
+Erre a célra tökéletesen megfelel, ha a ''/var/mayor/log/mayor-base.rev'' állományt másoljuk le ''revision'' néven:
+
+ cp /var/mayor/log/mayor-base.rev /var/mayor/log/revision
+
+A mentést, frissítést rendszeressé tehetjük, ha egy erre szolgáló szkriptet ''cron''-ból hívunk meg:
+
+ ln -s /var/mayor/bin/etc/cron.daily/mayor /etc/cron.daily
+
+Ez a script alapértelmezés szerint napi mentést és vasárnaponként frissítést végez, de szükség szerint átalakítható (akkor persze a szimbolikus link helyett a skript másolatával érdemes dolgozni).
+
+Tovább növelhetjük a biztonságot, ha a mentést rögtön egy másik számítógépre is átmásoljuk (pl scp-vel).
+
+==== Szimbolikus linkek és jogosultságok ====
+
+A webszerver számára hozzáférhetővé kell tenni bizonyos könyvtárakat:
+
+ chown -R www-data /var/mayor/download
+ chown -R www-data /var/mayor/www/wiki/conf
+ chown -R www-data /var/mayor/www/wiki/data
+
+A publikus és szülői oldalakon úgy tudjuk elérhetővé tenni az egyes oldalakat, ha szimbolikus linket készítünk a private-on
+belüli megfelelőjükre. Például, ha szeretnénk elérhetővé tenni az Órarendet a publikus oldalakon, akkor két szimbolikus linkre
+is szükség lesz:
+
+ ln -s /var/mayor/www/policy/private/naplo/tanev/orarend-pre.php /var/mayor/www/policy/public/naplo/tanev/
+ ln -s /var/mayor/www/policy/private/naplo/tanev/orarend.php /var/mayor/www/policy/public/naplo/tanev/
+
+Alapértelmezett telepítés esetén elég sok ilyen oldal lesz. A szükséges könyvtárak és linkek elkészítését az alábbi szkript végezheti:
+
+ parentSymlink="naplo/hibabejelento/hibabejelento naplo//szulinap naplo/haladasi/haladasi naplo/haladasi/stat naplo/osztalyozo/diak
+ naplo/osztalyozo/jegy naplo/osztalyozo/dolgozat naplo/osztalyozo/bizonyitvany naplo/osztalyozo/stat
+ naplo/bejegyzesek/bejegyzesek naplo/tanev/fogadoOra naplo/tanev/helyettesites naplo/tanev/munkaterv naplo/tanev/orarend
+ naplo/intezmeny/valtas naplo/hianyzas/diak naplo/hianyzas/diakLista naplo/hianyzas/nap naplo/uzeno/uzeno naplo/ertekeles/ertekeles
+ portal/hirek/egyhir"
+
+ publicSymlink="naplo/tanev/orarend naplo/tanev/szabadTerem naplo/tanev/helyettesites"
+ BASEDIR="/var/mayor"
+ POLICIES="parent public"
+
+ for POLICY in $POLICIES; do
+ eval "LIST=\$${POLICY}Symlink"
+ for f in $LIST; do
+ DIR=`echo $f | cut -d / -f 1-2`
+ if [ ! -d $BASEDIR/www/policy/$POLICY/$DIR ]; then
+ echo " Könyvtár: $BASEDIR/www/policy/$POLICY/$DIR"
+ mkdir -p $BASEDIR/www/policy/$POLICY/$DIR
+ fi
+ FILES="$f-pre.php $f.php"
+ for file in $FILES; do
+ if [ ! -e $BASEDIR/www/policy/$POLICY/$file ]; then
+ if [ -f $BASEDIR/www/policy/private/$file ]; then
+ echo " $BASEDIR/www/policy/private/$file --> $BASEDIR/www/policy/$POLICY/$file"
+ ln -s $BASEDIR/www/policy/private/$file $BASEDIR/www/policy/$POLICY/$file
+ else
+ echo " Hiányzó file: $BASEDIR/www/policy/private/$file"
+ fi
+ fi
+ done
+ done
+ done
+
+A fenti szkript lépéseit az update folyamat is elvégzi a main.conf-ban rögzített paraméterek alapján. Így, ha kényelmesebb megvárni az első
+frissítést (mayor update), akkor azzal is elvégeztethető a feladat.
+
+===== Belépés a MaYoR rendszerbe =====
+
+Ezek után beléphetünk a korábban létrehozott ''mayoradmin'' azonosítóval. A rendszer kötelező jelszóváltoztatást ír elő. Írjuk be a régi, majd kétszer az új jelszót. A sikeres jelszóváltoztatás után végre valóban beléphetünk.
+
+==== Új intézmény felvétele ====
+
+A ''Napló'' menüpontra kattintva a program arra figyelmeztet minket, hogy nincs intézmény felvéve, és rögtön az intézmény felvétel elvégzésére szolgáló oldalra rak.
+
+Adjuk meg az intézmény OM kódját, rövid nevét (egy kisbetűs, ékezet nélküli szó, 3-6 betű), hivatalos nevét, címét (később a napló nyomtatásakor szükség lesz rá), valamint a MySQL rendszergazda jelszavát - hogy létrehozhassa a program az intézményi adatbázist.
+
+Az intézmény felvétele után újabb hibaüzenetet kapunk: nincs érvényes tanév felvéve.
+
+
+==== Tanévek, szemeszterek felvétele ====
+
+A hibaüzenet után a program az új tanév felvételére szolgáló oldalra továbbít minket. A feladatot itt is elvégezhetjük, de - a betöltendő adatok mennyisége miatt - kényelmesebb lehet egy sql dump állományból betölteni a szemeszterek adatait. A dump állomány például:
+
+ $ cat szemeszter.dump
+ LOCK TABLES `szemeszter` WRITE;
+ INSERT INTO `szemeszter` VALUES
+ (1997,1,1,'tervezett','1997-09-01','1998-01-31'),(1997,2,2,'tervezett','1998-02-01','1998-06-30'),(1998,1,3,'tervezett','1998-09-01','1999-01-31'),
+ (1998,2,4,'tervezett','1999-02-01','1999-06-30'),(1999,1,5,'tervezett','1999-09-01','2000-01-31'),(1999,2,6,'tervezett','2000-02-01','2000-06-30'),
+ (2000,1,7,'tervezett','2000-09-01','2001-01-31'),(2000,2,8,'tervezett','2001-02-01','2001-06-30'),(2001,1,9,'tervezett','2001-09-01','2002-01-31'),
+ (2001,2,10,'tervezett','2002-02-01','2002-06-30'),(2002,1,11,'tervezett','2002-09-01','2003-01-31'),(2002,2,12,'tervezett','2003-02-01','2003-06-30'),
+ (2003,1,13,'tervezett','2003-09-01','2004-01-31'),(2003,2,14,'tervezett','2004-02-01','2004-06-30'),(2004,1,15,'tervezett','2004-09-01','2005-01-31'),
+ (2004,2,16,'tervezett','2005-02-01','2005-06-30'),(2005,1,17,'tervezett','2005-09-01','2006-01-31'),(2005,2,18,'tervezett','2006-02-01','2006-06-30'),
+ (2006,1,19,'tervezett','2006-09-01','2007-01-19'),(2006,2,20,'tervezett','2007-01-20','2007-06-15'),(2007,1,21,'tervezett','2007-09-03','2008-01-18'),
+ (2007,2,22,'tervezett','2008-01-19','2008-06-13'),(2008,1,23,'tervezett','2008-09-01','2009-01-31'),(2008,2,24,'tervezett','2009-02-01','2009-06-30'),
+ (2009,1,25,'tervezett','2009-09-01','2010-01-31'),(2009,2,26,'tervezett','2010-02-01','2010-06-30'),(2010,1,27,'tervezett','2010-09-01','2011-01-31'),
+ (2010,2,28,'tervezett','2011-02-01','2011-06-30'),(2011,1,29,'tervezett','2011-09-01','2012-01-31'),(2011,2,30,'tervezett','2012-02-01','2012-06-30'),
+ (2012,1,31,'tervezett','2012-09-01','2013-01-31'),(2012,2,32,'tervezett','2013-02-01','2013-06-30'),(2013,1,33,'tervezett','2013-09-01','2014-01-31'),
+ (2013,2,34,'tervezett','2014-02-01','2014-06-30');
+ UNLOCK TABLES;
+
+Fontos, hogy mindegyik 'tervezett' státuszú. Ennek betöltése:
+
+ cat szemeszter.dump | mysql -p intezmeny_[rovid]
+
+Ahol '[rovid]' az intézmény rövid neve.
+
+A szemeszterek betöltése után aktivvá tehetünk tanéveket (tanév megnyitása) - ekkor jönnek létre a tanév adatait tároló adatbázisok. Ehhez a tanév kiválasztása után a MySQL rendszergazdai jelszót kell csak megadnunk.
+
+Ha van aktív tanév, akkor a korábbi hibaüzenet eltűnik és helyette egy kék keretes figyelmeztető üzenetet kapunk, ami arra hívja fel a figyelmet, hogy a tanév adatai nincsenek felvéve (éves munkaterv, órarend, tankörök).
+
+
+===== Adatok felvitele =====
+
+Az adatok betöltése a munka legnagyobb része. Fontos, hogy az adatfelvitelnek van egy logikus sorrendje, hiszen az egyes adatok egymásra épülhetnek. Órarendet betölteni például csak akkor van értelme, csak akkor lehet, ha már fent van az összes tanár adata, munkaközösségekbe sorolva, renden vannak a tárgyak, a termek, és ki vannak alakítva a tankörök is.
+
+==== Tanárok felvétele ====
+
+A tanárokat [[naplo:intezmeny:tanar#Tanárok felvétele adatállományból|adatállományból érdemes betölteni]], bár felvehetjük őket egyesével is a felületről.
+
+==== Osztályok felvétele ====
+
+Az új osztályokat (esetleg osztályfőnökkel, de tagok nélkül egyelőre) a felületről vehetjük fel legkönnyebben: [[naplo:intezmeny:osztaly|Napló/Intézményi adatok/Osztályok]].
+
+==== Diákok felvétele ====
+
+A diákokat rögtön osztályokba sorolva vehetjük fel adatállományból: [[naplo:intezmeny:osztaly#Osztály tagjainak felvétele/frissítése adatállományból|Napló/Intézményi adatok/Osztályok]]
+
+==== Munkaközösségek/Tárgyak felvétele ====
+
+A munkaközösség elnevezés kissé félrevezető. Valójában inkább a tanárok végzettségéről van szó, ez határozza meg, hogy ki milyen tárgyat taníthat, milyen órát helyettesíthet szakszerűen. Egy tanár természetesen több munkaközösségbe is beletartozhat.
+
+Az új tárgyakat a felületről vehetjük legkönnyebben: [[naplo:intezmeny:munkakozosseg|Napló/Intézményi adatok/Munkaközösségek]] (munkaközösség vezetőkkel,tagokkal, tárgyakkal).
+
+==== Éves munkaterv betöltése ====
+
+Az éves munkaterv lényege, hogy rögzítse a tanév tanítási napjainak, speciális tanítási napjainak, tanításnélküli munkanapjainak és tanítási szünetek dátumát, valamint több hetes órarend esetén ezek beosztását.
+
+Az éves munkaterv felvétele a [[naplo:tanev:munkaterv|Tanév adatok/Éves munkaterv]] menüpont alatt történhet.
+
+==== Termek adatainak felvétele ====
+
+A temek adatait közvetlenül az intézményi adatbázis ''terem'' táblájába tölthetjük SQL szinten, vagy az [[naplo:admin:import|Admin/Import]] menüpont alatt. A tábla mezői:
+
+ teremId | smallint(5) unsigned
+ leiras | varchar(64)
+ ferohely | tinyint(3) unsigned
+ tipus | set('tanterem','szaktanterem','osztályterem','labor','gépterem','tornaterem','tornaszoba','fejlesztőszoba','tanműhely','előadó','könyvtár','díszterem','tanári','templom','egyéb')
+
+==== Tankörök felvétele ====
+
+Az egyik legnagyobb feladat - különösen egy épp induló intézmény esetén - a [naplo:intezmeny:tankor|tankörök felvétele]]. Ugyanakkor a tankörök alkotják a rendszer alapját, így ezek felvétele és karbantartása kiemelten fontos feladat.
+
+==== Órarend betöltése ====
+
+Az órarend betöltés talán a másik egnehezebb feladat. Külön nehézsége, hogy általában nem lehet vele előre elkészülni, viszonylag szűk határidő van a betöltésre.
+Az órarendet nem a MaYoR rendszerben készyítjük, hanem valamilyen erre a célra készült szoftverrel. A további lépések nagyban függenek a használt programtól.
+
+Alapvetően három lehetőségünk van:
+ * Betöltjük az adatokat közvetlenül az ''orarendiOra'' táblába az [[naplo:admin:import|Admin/Import]] menüpont alatt, majd elvégezzük az [[naplo:orarend:orarendTankor|órarend-tankör összerendelést]]
+ * Használjuk a prgram által biztosított [[naplo:orarend:orarendbetolto|órarend betöltő]] funkciót, valamelyik import modullal
+ * Felvesszük az órarendet "kézzel", tanáronként az [[naplo:orarend:orarendmodositas|Órarend módosítás]] menüpont alatt.
+
+==== Tanári és diák azonosítók generálása ====
+
+Szükség esetén a ''tanar'' és ''diak'' tábla adatait felhasználva generálhatunk felhasználói azonosítókat: [[hogyan:Felhasználói azonosítók generálása]]
+
+==== Szülői adatok felvétele ====
+
+A szülők adatait általában a diákok adatival együtt kapjuk meg, egy táblázatban. A MaYoR rendszerben viszont a szülők adatai külön adattáblába kerülnek. Ez az használat során előnyös (pl. testvér gyerekek szülői adatai csak egy helyen lesznek eltárolva), de a betöltéskor nehézségeket okoz: [[hogyan:Szülői adatok betöltése]]. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites.txt
new file mode 100644
index 00000000..a9c1931c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/telepites.txt
@@ -0,0 +1,105 @@
+====== Telepítés ======
+
+===== Hardver =====
+
+A rendszernek nincs különösebben nagy hardverigénye, inkább azt érdemes szem előtt tartani, hogy stabil, megbízható gépet válasszunk.
+Mindenképp javasoljuk, hogy a MaYoR elektronikus adminisztrációs rendszert külön szerverre kerüljön - így könnyebb biztosítani az
+adatok védelmét. (A megfelelően védett host operációs rendszeren tetszőleges virtualizált környezet nagyrészén is teljesítmény gond nélkül
+futtatható.)
+
+===== Operációs rendszer telepítése =====
+
+Operációs rendszerként elsősorban Debian Linux rendszert javaslunk - már többször bevált. De telepítettük a rendszert Ubuntura is és
+minden bizonnyal más Linux terjesztésekkel is működésre bírható a rendszer, mi még ugyan nem próbálkoztunk ezekkel, de
+Kiss Antal Gábor (Felsőbüki Nagy Pál Gimnázium - Kapuvár) például telepítette SuSE alá - az ő erre vonatkozó megjegyzéseivel
+ki is egészítettük a leírást (mástól is szívesen veszünk hasonlót!). Az extrém sportokat kedvelők megpróbálhatják a rendszert
+Windows alá is telepíteni, hiszen a szükséges szoftverek legnagyobb része (MySQL, Apache, PHP, stb) erre az operációs rendszerre is
+fellelhető (talán a TeX, LaTeX környezet okozná a legnagyobb gondot).
+
+A továbbiakban a Debian rendszerre való telepítés lépéseit követjük.
+(Az alap Debian telepítéséhez [[hogyan:telepites-debian|egy kis segítség]]).
+
+==== MaYoR Installer (ß) használata ====
+
+Ha megfelelnek számunkra az alapbeállítások, a szokásos telepítés, akkor használjuk a mayor-installer-t. Ez egy telepítő szkript "csokor", ami lényegében
+az alább részletezett lépéseket hajtja végre minimális felhasználói közbeavatkozással. A folyamat végén egy működő rendszert kapunk egy intézménnyel, melyhez
+meg kell nyitnunk egy tanévet és fel kell vennünk az alapadatokat (tanárok, diákok, osztályok, tárgyak, termek, tankörök, órarend, stb).
+
+Használatához szedjük le a csomagot:
+
+ cd /tmp && mkdir mayorinstall && cd mayorinstall
+ wget http://www.mayor.hu/download/current/mayor-installer-current.tgz
+
+Majd csomagoljuk ki:
+
+ tar xfz mayor-installer-current.tgz
+
+Végül futtassuk a setup szkriptet:
+
+ ./setup
+
+Aki nem bízik a shell-scriptek erejében, kézzel is nekivághat a korántsem rövid folyamatnak:
+[[hogyan:telepites-man|manuális telepítés]]
+
+===== Belépés a MaYoR rendszerbe =====
+
+Ezek után kedvenc böngészőnkkel beléphetünk a rendszerbe a korábban létrehozott ''mayoradmin'' azonosítóval. A rendszer kötelező jelszóváltoztatást ír elő.
+Írjuk be a régi, majd kétszer az új jelszót. A sikeres jelszóváltoztatás után végre valóban beléphetünk.
+
+===== Adatok felvitele =====
+
+Az adatok betöltése a munka legnagyobb része. Fontos, hogy az adatfelvitelnek van egy logikus sorrendje, hiszen az egyes adatok egymásra épülhetnek. Órarendet betölteni például csak akkor van értelme, csak akkor lehet, ha már fent van az összes tanár adata, munkaközösségekbe sorolva, renden vannak a tárgyak, a termek, és ki vannak alakítva a tankörök is.
+
+==== Tanárok felvétele ====
+
+A tanárokat [[naplo:intezmeny:tanar#Tanárok felvétele adatállományból|adatállományból érdemes betölteni]], bár felvehetjük őket egyesével is a felületről.
+
+==== Osztályok felvétele ====
+
+Az új osztályokat (esetleg osztályfőnökkel, de tagok nélkül egyelőre) a felületről vehetjük fel legkönnyebben: [[naplo:intezmeny:osztaly|Napló/Intézményi adatok/Osztályok]].
+
+==== Diákok felvétele ====
+
+A diákokat rögtön osztályokba sorolva vehetjük fel adatállományból: [[naplo:intezmeny:osztaly#Osztály tagjainak felvétele/frissítése adatállományból|Napló/Intézményi adatok/Osztályok]]
+
+==== Munkaközösségek/Tárgyak felvétele ====
+
+A munkaközösség elnevezés kissé félrevezető. Valójában inkább a tanárok végzettségéről van szó, ez határozza meg, hogy ki milyen tárgyat taníthat, milyen órát helyettesíthet szakszerűen. Egy tanár természetesen több munkaközösségbe is beletartozhat.
+
+Az új tárgyakat a felületről vehetjük legkönnyebben: [[naplo:intezmeny:munkakozosseg|Napló/Intézményi adatok/Munkaközösségek]] (munkaközösség vezetőkkel,tagokkal, tárgyakkal).
+
+==== Éves munkaterv betöltése ====
+
+Az éves munkaterv lényege, hogy rögzítse a tanév tanítási napjainak, speciális tanítási napjainak, tanításnélküli munkanapjainak és tanítási szünetek dátumát, valamint több hetes órarend esetén ezek beosztását.
+
+Az éves munkaterv felvétele a [[naplo:tanev:munkaterv|Tanév adatok/Éves munkaterv]] menüpont alatt történhet.
+
+==== Termek adatainak felvétele ====
+
+A temek adatait közvetlenül az intézményi adatbázis ''terem'' táblájába tölthetjük SQL szinten, vagy az [[naplo:admin:import|Admin/Import]] menüpont alatt. A tábla mezői:
+
+ teremId | smallint(5) unsigned
+ leiras | varchar(64)
+ ferohely | tinyint(3) unsigned
+ tipus | set('tanterem','szaktanterem','osztályterem','labor','gépterem','tornaterem','tornaszoba','fejlesztőszoba','tanműhely','előadó','könyvtár','díszterem','tanári','templom','egyéb')
+
+==== Tankörök felvétele ====
+
+Az egyik legnagyobb feladat - különösen egy épp induló intézmény esetén - a [naplo:intezmeny:tankor|tankörök felvétele]]. Ugyanakkor a tankörök alkotják a rendszer alapját, így ezek felvétele és karbantartása kiemelten fontos feladat.
+
+==== Órarend betöltése ====
+
+Az órarend betöltés talán a másik egnehezebb feladat. Külön nehézsége, hogy általában nem lehet vele előre elkészülni, viszonylag szűk határidő van a betöltésre.
+Az órarendet nem a MaYoR rendszerben készyítjük, hanem valamilyen erre a célra készült szoftverrel. A további lépések nagyban függenek a használt programtól.
+
+Alapvetően két lehetőségünk van:
+ * Betöltjük az adatokat közvetlenül az ''orarendiOra'' táblába az [[naplo:admin:import|Admin/Import]] menüpont alatt, majd elvégezzük az [[naplo:orarend:orarendTankor|órarend-tankör összerendelést]]
+ * Használjuk a prgram által biztosított [[naplo:orarend:orarendbetolto|órarend betöltő]] funkciót, valamelyik import modullal.
+
+==== Tanári és diák azonosítók generálása ====
+
+Szükség esetén a ''tanar'' és ''diak'' tábla adatait felhasználva generálhatunk felhasználói azonosítókat: [[hogyan:Felhasználói azonosítók generálása]]
+
+==== Szülői adatok felvétele ====
+
+A szülők adatait általában a diákok adatival együtt kapjuk meg, egy táblázatban. A MaYoR rendszerben viszont a szülők adatai külön adattáblába kerülnek. Ez az használat során előnyös (pl. testvér gyerekek szülői adatai csak egy helyen lesznek eltárolva), de a betöltéskor nehézségeket okoz: [[hogyan:Szülői adatok betöltése]]. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_diak.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_diak.txt
new file mode 100644
index 00000000..bdd9c74e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_diak.txt
@@ -0,0 +1,27 @@
+
+===== Új diák felvétele =====
+
+Így járjunk el a tanév közben érkezett diák(ok) manuális felvételekor.
+
+==== Diák, szülők adatai, azonosítók ====
+
+A **Napló/Intézményi adatok/Diákok** menüben értelemszerűen vegyük fel a diák és a szülők, gondviselő adatait, annyira részletesen (szociális helyzet, fogyatékosság, stb.), amennyire az intézményi adattárolás előírja. Az oktatási azonosítót jegyezzük fel, másoljuk ki, erre még szükség lesz!
+A **Bekerülés módja** legördülő menüből válasszuk ki a belépés okát! Ha itt először osztályt választunk ki, a "Bekerülés módja"-ként pedig a "felvétel osztályba" lehetőséget, akkor rögtön osztályba is sorolhatjuk az új diákot.
+
+Ha használjuk a napló [[naplo:small_faces|Arcok a naplóban]] lehetőségét, ne halasztgassuk, készítsünk fotót az új diákról, később nehéz lesz előkeríteni...! :-o
+
+A felvétel tényéről készül egy záradék-bejegyzés is (ezt ellenőrizhetjük a **Napló/Intézményi adatok/Záradékok** menüben, a diák nevére keresve).
+
+Célszerű azonnal felvenni az accountokat is a **Felhasználói adatok/Új felhasználó** menüben. A mezők értelemszerűen töltődnek, itt lesz szükség az oktatási azonosítóra. Diákot a //private// szintre, szükőket, gondviselőket a //parent// szintre vegyük fel!
+
+==== Osztálybaléptetés ====
+
+Az új diák immár az iskola tagja, de hontalan... :-) (már, ha az előző lépsében nem soroltuk rögtön osztályba)
+
+Lépjünk a **Napló/Intézményi adatok/Osztályok** menübe, keressük ki az új diák osztályát, majd az **Új tag felvétele** résznél keressük ki a diákot a névsorból, állítsuk be a dátumot, és kattintsunk az **OK**-ra! Az osztály listájában immár szerepelni fog.
+
+==== Tankörbeléptetés ====
+
+Már csak annyi van hátra, hogy az új diákot tankörökbe soroljuk. Ehhez válasszuk a **Napló/Intézményi adatok/Diák tankörei** menüjét! A dátumot és a diákot kiválasztva láthatóvá válnak azok a tankörök, amelyek az osztály által érintettek. A nevek előtti checkbox-ba pipát téve lép be a diák az adott dátummal a tankörbe. Az **OK** gomb megnyomása után zöld hátterűre változnak a választott tankörök (ezt egyébként külön kigyűjtve meg is tekinthetjük a lap alján), kék hátterűek maradnak a ki nem választott tankörök.
+
+A diák és/vagy a szülő saját account-jával belépve ezek után látja a diák haladási naplóját, osztályzó naplóját, órarendjét, stb. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_skin.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_skin.txt
new file mode 100644
index 00000000..9a89acd4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/uj_skin.txt
@@ -0,0 +1,43 @@
+===== Hogyan telepítsünk új skin-t? =====
+
+A MaYoR rendszerhez könnyen készíthetünk saját skin-eket, kisebb-nagyobb mértékben testreszabhatjuk az oldalak kinézetét. Ezáltal saját
+intézményünk arculatához vagy valamilyen alkalomhoz igazíthatjuk a program kinézetét. Ezt a lehetőséget használjuk ki a PDA-k számára készített
+megjelenés megvalósításához is.
+
+==== Hogy lehet elérhetővé tenni egy skin-t? ====
+
+Szerkesszük a /var/mayor/config/main-config.php-t! Ebben találunk két sort, melybe fel kell vennünk az új elemet:
+
+ $SKINS = array('classic','ajax','xml','pda','rpc','blue','vakbarat');
+ $SKINSSHOW = array('classic','blue','vakbarat');
+
+Az előbbi a mayor rendszer által elérhető, elfogadott skin-ek listája, az utóbbi - a classic skinben - az oldal bal felső sarkában megjelenő, kiválasztható skin-ek listája.
+
+==== Hogyan tehetünk alapértelmezetté egy skin-t? ====
+
+A skin-ek hozzáférési szintenként (policy) állíthatók be. Ha például a publikus oldalak megjelenését szeretnénk a blue nevű skin-re változtatni,
+akkor ehhez a /var/mayor/config/public-conf.php-t kell szerkesztenünk:
+
+ $AUTH['public'] = array(
+
+ 'skin' => 'blue',
+ ...
+
+ );
+
+==== Hogyan készíthetünk saját skin-t? ====
+
+Lehetőség szerint ne csináljunk ilyet :)
+
+Először is adjuk egy egyszerű nevet az új skin-nek. Példánkban ez a név: winter.
+A skinhez tartozó file-ok ezek után a /var/mayor/www/skin/winter alá fognak kerülni, illetve még egy konfigurációs állomány tartozhat hozzá a
+/var/mayor/config/skin-winter könyvtár alatt.
+
+Fontos tudnunk, hogy a program egy skin használata során, ha nem talál az adott skin könyvtára alatt egy (css vagy phtml) állományt, akkor a
+hiányzó fájlt az alapértelmezett classic skin-ből veszi. Ez a mechanizmus nagyon hasznos, mert így elegendő a classic skin-től való eltéréseket
+megadnunk.
+
+A legtöbb esetben egy új skin nem több néhány képnél és css állománynál. Érdemes is ezen a szinten megmeradni, hisz a html kód módosítása
+a működésre is befolyással lehet.
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/visszatoltes_mentesbol.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/visszatoltes_mentesbol.txt
new file mode 100644
index 00000000..ae8765c4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/visszatoltes_mentesbol.txt
@@ -0,0 +1,176 @@
+
+[color=red][size=40px]**Ez az oldal még félkész!**[/size][/color]
+
+====== Adatok visszatöltés mentésből ======
+
+**Feltétlenül olvassuk végig az eljárást, és csak után kezdjünk neki a munkának!**
+
+Bármennyire is gondosan üzemeljük, felügyeljük a MaYoR-t, előfordulhat, hogy adataink sérülnek, elvesznek, ilyenkor - viszonylag - kevés munkával visszaállítható valamelyik (célszerűen az utolsó ép) mentéskori állapot.
+Hasznos lehet, ha gyakorlás, próbálgatás, kísérletezés vagy éppen egy előadás, bemutató céljából az éles rendszer adatait egy fizikailag más gépre, vagy épp egy virtuális gépre átemeljük, ezeket aztán következmények nélkül lehet használni. Ez esetben a teljes visszatöltés metódusát kövessük!
+
+A napló új gépre költöztetésekor, vagy új telepítés esetén, tesztrendszer kialakításakor a teljes rendszert kell visszaállítani/áttölteni, míg egy elírás, rosszul kiadott sql-parancs következtében általában elég csak az egyik adatbázis kérdéses tábláját beemelni.
+
+Mindegyik esetben a jelszó: **don't panic!!!** :-)
+
+(Az alábbi leírások Debian/MySQL-alapú rendszerhez passzolnak.)
+
+Célszerű a visszatöltés idejére a webszervert leállítani, részint, hogy a Felhasználók ne kapjanak töménytelen mennyiségű hibaüzenettel teletűzdelt felületet, részint, hogy megakadályozzuk a Felhasználók visszatöltés közbeni üzeneteit, jegybeírásait, és egyéb - számunkra épp ekkor nemkívánatos - tevékenységeit (adódhat olyan, hogy az egyik, épp visszatöltött táblába már beír a Felhasználó, miközben a többi, esetleg ehhez kapcsolódó tábla még a backup-adattárolón vár a sorára...)
+
+===== Visszatöltés új telepítésre (másik hardware, op.rendszer újratelepítés, tesztrendszer) =====
+Tesztrendszer kialakítása, új gép vásárlása a MaYoR napló számára, nagyobb merevlemez beszerzés, hardware-hiba, netán illetéktelen hozzáférés után - számtalan oka lehet annak, hogy vadonatúj rendszer alá kell visszatöltenünk régi adatainkat.
+Ebben az esetben is (de minden más esetben) roppant fontos a rendszeres, biztonságos helyen tárolt [[hogyan:karbantartas#mentes|mentés]])!
+
+==== Mielőtt nekifogunk... ====
+
+Első és legfontosabb, hogy az [[hogyan:telepites#operacios_rendszer_telepitese|operációs rendszer]], a MaYoR és a szükséges csomagok [[hogyan:telepites#mayor_installer_ss_hasznalata|telepítése]] megtörténjen (esetleg [[hogyan:telepites-man|kézi]] telepítéssel).
+
+Állítsuk le a webszervert:
+
+ /etc/init.d/apache2 stop
+
+Lépjünk be az MySQL-be:
+
+ # mysql -p
+ Password:
+
+Liztázzuk ki az adatbázisokat:
+
+ mysql> SHOW DATABASES;
+
+Az aktuális tanév (és esetleg a régebbiek) kivételével ott kell szerepelnie a(z) //information_schema, intezmeny_[iskolarovidneve], mayor_login, mayor_naplo, mayor_parent, mayor_private// és //mysql// adatbázisoknak.
+
+==== Az első komoly buktató ====
+
+Itt következik az egyik olyan lépés, amelybe könnyen beletörik a bicska, és melyen kétféleképp is átléphetünk, mindkét módszer jó, használható.
+
+----
+
+**a)** Ha áll a webszerver, erre a rövid időre indítsuk el! Lépjünk be a friss MaYoR-ba (mayoradmin és jelszo az első belépés, a jelszavunkat rögtön meg is kell változtatni. Célszerű arra változtatni, ami a betöltendő naplóhoz passzoló jelszó, így egy lépést spórolunk...)!
+
+Hozzuk létre az(oka)t a tanév(ek)et, amit be kívánunk tölteni! Ezzel a lépéssel lefutnak azok a jogosukltság-beállítások, amik a használathoz a későbbiek során szükségesek.
+
+Lépjünk ki, állítsuk le a webszervert!
+
+----
+
+**b)** A MaYoR-ba történő belépés nélkül hozzuk létre az aktuális tanév (és szükség esetén a visszatöltendő többi tanév) adatbázisát:
+
+ mysql> CREATE DATABASE naplo_[iskolarovidneve]_[aktualistanev];
+
+vagyis például //naplo_szag_2010// (a 2010/2011-es tanév adatbázisa), majd biztos, ami biztos, ellenőrizzük:
+
+ mysql> SHOW DATABASES;
+
+Immár szerepelnie kell a többi mellett a //naplo_[iskolarovidneve]_[aktualistanev]// adatbázisnak is.
+
+Ez a lépés azonban nem állítja be a mysql-usereknek a használathoz szükséges hozzáférést. Ezt kézzel kell megtennünk:
+
+A //mayor_naplo// user számára az //intezmeny_[iskolarovidneve] és a naplo_[iskolarovidneve]_[tanev]// adatbázisok tábláihoz állítsuk be a hozzáférést:
+
+ mysql> GRANT ALL ON intezmeny_szag.* TO 'mayor_naplo'@'localhost' IDENTIFIED BY "jelszo";
+ mysql> GRANT ALL ON naplo_szag_2010.* TO 'mayor_naplo'@'localhost' IDENTIFIED BY "jelszo";
+
+A jelszo helyére a ///var/mayor/config/module-naplo/config.php// állományban találjuk a //mayor_naplo// user jelszavát, amit a legegyszerűbben talán a
+
+ # cat /var/mayor/config/module-naplo/config.php | grep -a2 mayor_naplo
+
+paranccsal kapunk meg (a jelszó egy véletlenszerűen, a mayor telepítésekor generált karaktersor).
+
+Ehhez hasonló módon kell beállítani a //mayor_naplo_read// user jogosultságait is:
+
+ mysql> GRANT SELECT,EXECUTE ON intezmeny_szag.* TO 'mayor_naplo_read'@'localhost' IDENTIFIED BY "jelszo";
+ mysql> GRANT SELECT,EXECUTE ON naplo_szag_2010.* TO 'mayor_naplo_read'@'localhost' IDENTIFIED BY "jelszo";
+
+A jelszo helyére a ///var/mayor/config/module-naplo/config.php// állományban találjuk a //mayor_naplo_read// user jelszavát, amit a legegyszerűbben talán a
+
+ # cat /var/mayor/config/module-naplo/config.php | grep -a2 mayor_naplo_read
+
+paranccsal kapunk meg (a jelszó egy véletlenszerűen, a mayor telepítésekor generált karaktersor).
+
+Szükség esetén a többi tanévvel is így kell eljárni!
+
+A végén a
+
+ mysql> FLUSH PRIVILEGES;
+
+paranccsal aktualizáljuk az előbb beállított jogokat!
+
+==== Adatbetöltés ====
+
+Keressük meg a betölteni kívánt mentést! A MaYoR a ///home/backup// könyvtárba ment, de természetesen egy új telepítésnél, másik gépre költöztetésnél itt nem lesz semmi. Példánkban a másik adathordozón levő mentés átmásolásával nem foglalkozunk, (ha gond van ezzel, a support segít), és onnan indulunk, hogy a ///tmp// könyvtárban ott van az //ééééhhnn.tgz// mentés!
+
+Csomagoljuk ki a mentést:
+
+ # cd /tmp && tar xfz 20100815.tgz
+
+A visszatöltés adatbázisonként külön-külön történik, vagyis sorban az összessel végig kell csinálni:
+
+ # cat /tmp/intezmeny_[iskolarovidneve].sql | mysql -p intezmeny_[iskolarovidneve]
+ Enter password:
+
+A MySQL root-jelszó megadása után a fenti adatbázis a teli tábláival együtt már a helyén van, ugyanígy kell eljárni //mayor_login, mayor_naplo, mayor_private, mayor_parent// és a //naplo_[iskolarovidneve]_2010// (meg esetleg a régebbi) adatbázisokkal.
+
+==== A második komoly buktató... ====
+
+Amennyiben a különböző config-állományainkat is szerentnénk (és miért ne...?) az új, áttelepített rendszeren használni, ismét két lehetőségünk van:
+
+----
+
+**a)** A régi config-állományok beállításait egyenként, kézzel átírjuk az új config-állományokba. Ez a módszer is jó lehet, ha egy-két különbségről van csupán szó, nagyobb léptékben azonban ez a módszer lassú, nehézkes, és sok hibalehetőséggel jár.
+
+----
+
+**b)** A másik módszer egyszerűbb, gyorsabb, de veszélyei ennek is vannak.
+
+Első lépésként az új config (ez tartalmazza a telepítéskor létrejövő véletlenszerű jelszavakat...) könyvtárat másoljuk át biztonságos helyre, például a ///home/backup//-ba:
+
+ # cp -R /var/mayor/config /home/backup
+
+Gyűjtsük ki sorra a /home/backup állományaiból a jelszavakat:
+ * mayor_private - config/private-conf.php
+ * mayor_parent - config/parent-conf.php
+ * mayor_portal - config/module-portal/config.php
+ * mayor_naplo - config/module-naplo/config.php
+ * mayor_naplo_read - config/module-naplo/config.php
+ * mayor_login - config/main-config.php
+ * mysql root -config/main.conf
+
+Ezek után érdemes a config-állományokat, skin-eket és egyéb - már jól bevált, régi állományokat - is visszamásolni a helyére, felülírva az ott levőket. Például:
+
+ # cp /tmp/config/module-naplo/config-[iskolarovidneve].php /var/mayor/config/module-naplo/
+
+A ///home/backup//-beli jelszavakat szépen sorban, konzekvensen, a kis- és nagybetűkre különös figyelemmel írjuk át a ///var/mayor/config//-beliekre.
+
+Amennyiben nem szeretnénk így eljárni (ez esetben is mentsük a friss //config// könyvtárat, biztos, ami biztos!), arra is van lehetőség, hogy a visszatöltött adatbázisban kicseréljük a mysql-felhasználók jelszavait. Ekkor is ki kell keresni a ///var/mayor/config// könyvtárban az egyes jelszvakat, majd egyesével lecserélni a mysql-ben:
+
+ mysql> UPDATE mysql.user SET Password=PASSWORD('kikeresett-jelszo') WHERE user='mayor_private';
+
+... és sorban az összes többit.
+
+==== Befejezés ====
+
+Nincs más hátra, mint elindítani a webszervert:
+
+ # /etc/init.d/apache2 start
+
+Ha jól csináltunk mindent, az eredetivel megegyező naplót kapunk.
+
+==== Vissza lehet-e tölteni régebbi adatbázist újabb revision-számú MaYoR-ra? ====
+
+Technikaligag igen, azonban a működésben szinte biztos, hogy gubancok lesznek: esetleg hiányzó, átírt mezőnevek, értékek, a függvények pedig biztos, hogy nem a régi adatbázishoz passzolnak... :-(
+Ahhoz, hogy egy régi verziót az akkori állapotok szerint tesztelni lehessen (egyezzen az adatbázis-szerkezet a revision-nel) szinte semmi esély. :-(
+
+Ha azonban a csak régi adatbázist tudunk visszatölteni (pl. adatvesztés okán), a problémák __valószínűleg__ áthidalhatók egy csellel: keressük meg a ///var/mayor/log/revision// állományt, írjuk vissza a benne szereplő számot a visszatöltendő rendszer revision-számára, majd mentés után frissítsük a MaYoR-t:
+
+ # mayor update
+
+Jó eséllyel hibátlanul működő rendszert kapunk.
+
+===== Visszatöltés régi op.rendszerre újratelepített MaYoR esetében =====
+
+
+Átalakítás alatt...
+
+===== Részleges visszatöltés (csak egy - vagy néhány - tábla sérülése esetén) =====
+
+Átalakítás alatt... \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/wiki_sajat_gepre.txt b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/wiki_sajat_gepre.txt
new file mode 100644
index 00000000..6ca357cf
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/hogyan/wiki_sajat_gepre.txt
@@ -0,0 +1,36 @@
+===== Wiki saját gépre =====
+
+Telepítés lépései:
+
+1. A ''main.conf'' állítsuk be a ''mayor-wiki'' csomag letöltését:
+
+ MODULES="mayor-base mayor-naplo mayor-portal mayor-wiki"
+
+2. A ''http://www.dokuwiki.org/dokuwiki'' oldalról töltsük le a [[http://www.dokuwiki.org/dokuwiki|dokuWiki]-t és csomagoljuk ki a ''/var/mayor/www/wiki'' könyvtárba.
+
+3. Ideiglenesen adjuk meg az írás jogokat a webszerver felhasználójának a conf és data könyvárakra:
+
+Például:
+
+ chown 777 -R /var/mayor/www/wiki/conf
+ chown 777 -R /var/mayor/www/wiki/data
+
+4. A böngészőbe gépeljük be a ''http://sajat_url/wiki/install.php'' címet és saját belátásunk szerint telepítsük a dokuWiki-t
+
+5. Vegyük vissza a ''conf'' és a ''data'' könyvtárakról a jogokat.
+
+Például:
+ chown 755 -R /var/mayor/www/wiki/conf
+ chown 755 -R /var/mayor/www/wiki/data
+
+6. Készítsünk szimbolikus linkeket a ''mayor-wiki'' fájlaira:
+ ln -s /var/mayor/wiki/dok.php /var/mayor/www/wiki/dok.php
+ ln -s /var/mayor/wiki/data/pages /var/mayor/www/wiki/data/pages
+ ln -s /var/mayor/wiki/lib/plugins/bbcode /var/mayor/www/wiki/lib/plugins/bbcode
+ ln -s /var/mayor/wiki/lib/tpl/mayor /var/mayor/www/wiki/lib/tpl/mayor
+
+7. Ha kedvünk tartja. akkor a ''/var/mayor/www/wiki/conf/dokuwiki.php'' fájlban állítsuk be a ''mayor'' skint:
+
+ $conf['template'] ='mayor';
+
+Ezt követően a ''http://sajat_url/wiki'' címen (illteve a digitális naplóból) bejön a wiki saját gépről.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatkezeles.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatkezeles.txt
new file mode 100644
index 00000000..37954aa7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatkezeles.txt
@@ -0,0 +1,355 @@
+====== 2. számú melléklet az 1993. évi LXXIX. törvényhez ======
+===== (A törvény 40. §-ához) =====
+
+==== Az alkalmazottak adatai ====
+
+1. E törvény alapján nyilvántartott adatok:
+
+a) név, születési hely és idő, állampolgárság;
+
+b) lakóhely, tartózkodási hely, telefonszám, azonosító szám;
+
+c) munkaviszonyra, közalkalmazotti jogviszonyra vonatkozó adatok
+
+- iskolai végzettség, szakképesítés, alkalmazási feltételek igazolása,
+
+- munkában töltött idő, közalkalmazotti jogviszonyba beszámítható idő, besorolással kapcsolatos adatok,
+
+- alkalmazott által kapott kitüntetések, díjak és más elismerések, címek,
+
+- munkakör, munkakörbe nem tartozó feladatra történő megbízás, munkavégzésre irányuló további jogviszony, fegyelmi büntetés, kártérítésre kötelezés,
+
+- munkavégzés ideje, túlmunka ideje, munkabér, illetmény, továbbá az azokat terhelő tartozás és annak jogosultja,
+
+- szabadság, kiadott szabadság,
+
+- alkalmazott részére történő kifizetések és azok jogcímei,
+
+- az alkalmazott részére adott juttatások és azok jogcímei,
+
+- az alkalmazott munkáltatóval szemben fennálló tartozásai, azok jogcímei,
+
+- a többi adat az érintett hozzájárulásával.
+
+2. Az 1. pontban felsorolt adatokat a magasabb vezető tekintetében a munkáltatói jog gyakorlója kezeli.
+
+3. Az 1. pontban felsorolt adatok továbbíthatók a fenntartónak, a kifizetőhelynek, bíróságnak, rendőrségnek, ügyészségnek, helyi önkormányzatnak, közigazgatási szervnek, a munkavégzésre vonatkozó rendelkezések ellenőrzésére jogosultaknak, a nemzetbiztonsági szolgálatnak.
+
+==== A gyermekek, tanulók adatai ====
+
+1. E törvény alapján nyilvántartott adatok:
+
+a) gyermek, tanuló neve, születési helye és ideje, állampolgársága, lakóhelyének, tartózkodási helyének címe, telefonszáma, nem magyar állampolgár esetén a Magyar Köztársaság területén való tartózkodás jogcíme és a tartózkodásra jogosító okirat megnevezése, száma;
+
+b) szülő neve, lakóhelye, tartózkodási helye, telefonszáma;
+
+c) a gyermek óvodai fejlődésével kapcsolatos adatok;
+
+d) a tanulói jogviszonnyal kapcsolatos adatok
+
+- felvételivel kapcsolatos adatok,
+
+- a tanuló magatartásának, szorgalmának és tudásának értékelése és minősítése, vizsgaadatok,
+
+- a tanulói fegyelmi és kártérítési ügyekkel kapcsolatos adatok,
+
+- a sajátos nevelési igényre vonatkozó adatok,
+
+- beilleszkedési, tanulási, magatartási nehézséggel küzdő gyermek, tanuló rendellenességére vonatkozó adatok,
+
+- a tanuló- és gyermekbalesetre vonatkozó adatok,
+
+- a tanuló diákigazolványának sorszáma,
+
+- a tanuló azonosító száma,
+
+- a tankönyvellátással kapcsolatos adatok,
+
+- a többi adat az érintett hozzájárulásával.
+
+2. Az adatok - az e törvényben meghatározott célból, a személyes adatok védelmére vonatkozó célhoz kötöttség megtartásával - továbbíthatók
+
+- fenntartó, bíróság, rendőrség, ügyészség, önkormányzat, közigazgatási szerv, nemzetbiztonsági szolgálat részére valamennyi adat,
+
+- sajátos nevelési igényre, a beilleszkedési zavarra, tanulási nehézségre, magatartási rendellenességre vonatkozó adatok a pedagógiai szakszolgálat intézményeitől a nevelési-oktatási intézménynek, illetve vissza,
+
+- az óvodai fejlődéssel, iskolába lépéshez szükséges fejlettséggel kapcsolatos adatok a szülőnek, a pedagógiai szakszolgálat intézményeinek, az iskolának,
+
+- a magatartás, szorgalom és tudás értékelésével kapcsolatos adatok az érintett osztályon belül, a nevelőtestületen belül, a szülőnek, a vizsgabizottságnak, a gyakorlati képzés szervezőjének, a tanulószerződés kötőjének, illetve, ha az értékelés nem az iskolában történik, az iskolának, iskolaváltás esetén az új iskolának, a szakmai ellenőrzés végzőjének,
+
+- a diákigazolvány - jogszabályban meghatározott - kezelője részére a diákigazolvány kiállításához szükséges valamennyi adat,
+
+- a gyermek óvodai felvételével, átvételével kapcsolatosan az érintett óvodához, iskolai felvételével, átvételével kapcsolatosan az érintett iskolához, felsőoktatási intézménybe történő felvétellel kapcsolatosan az érintett felsőoktatási intézményhez és vissza,
+
+- az egészségügyi, iskola-egészségügyi feladatot ellátó intézménynek a gyermek, tanuló egészségügyi állapotának megállapítása céljából,
+
+- a családvédelemmel foglalkozó intézménynek, szervezetnek, gyermek- és ifjúságvédelemmel foglalkozó szervezetnek, intézménynek a gyermek, tanuló veszélyeztetettségének feltárása, megszüntetése céljából,
+
+- az állami vizsgák alapján kiadott bizonyítványokat nyilvántartó szervezetnek a bizonyítványok nyilvántartása céljából, továbbá a nyilvántartó szervezettől a felsőfokú felvételi kérelmeket nyilvántartó szervezethez,
+
+- a tankönyvforgalmazókhoz, a külön törvényben meghatározott körben és célból.
+
+3. A nevelési-oktatási intézmény nyilvántartja azokat az adatokat, amelyek a jogszabályokban biztosított kedvezményekre való igényjogosultság elbírálásához és igazolásához szükségesek. E célból azok az adatok kezelhetők, amelyekből megállapítható a jogosult személye és a kedvezményre való jogosultsága.
+
+===== Adatvédelmi szabályzat =====
+
+Minta a A Csepel Sziget Műszaki Szakközépiskolából
+
+[[http://www.csepel-muszaki.hu/adatvedelem]]
+
+==== Adatvédelem ====
+
+A Csepel-Sziget Műszaki Szakközépiskola, Szakiskola és Kollégium Számítógépes Naplójának Adatvédelmi Szabályzata
+
+=== 1. Bevezető ===
+
+A Csepel-Sziget Műszaki Szakközépiskola, Szakiskola és Kollégium a Számítógépes Napló rendszerében nyilvántartott személyes adatok kezelésének jogszerűsége, az adatkezelés célhoz kötöttségének biztosítása, valamint az érintettek jogainak érvényesíthetősége érdekében, az Adatvédelmi, a Közoktatási, az SzJA, a TB törvény, valamint a diákigazolványról szóló kormányrendelet rendelkezései alapján az alábbi szabályzatot alkotja:
+
+=== 2. A szabályzat hatálya ===
+
+A jelen szabályzat hatálya kiterjed a Csepel-Sziget Műszaki Szakközépiskola, Szakiskola és Kollégium-ban közalkalmazotti jogviszonyban álló valamennyi személyre, továbbá mindazokra, akik valamely egyedi vagy általános engedély vagy felhatalmazás alapján jogosultak a Számítógépes Napló használatára, a rendszerbe való belépésre, az abban fellelhető adatok megtekintésére, adatok bevitelére, feldolgozására vagy továbbítására, illetőleg a rendszer műszaki-technikai üzemeltetésére, karbantartására.
+
+A jelen szabályzat hatálya alá tartozó személyek kötelesek a szabályzat rendelkezéseinek maradéktalan betartására.
+
+=== 3. A Számítógépes Napló adatbázisába bekerülő adatok köre ===
+
+Az adatbázisba az alábbi adatalanyok következő adatai kerülnek be:
+
+ * Az Intézménnyel közalkalmazotti vagy egyéb jogviszony alapján tanári, oktatói, nevelői tevékenységet végző személyek
+ * Az Intézménnyel közalkalmazotti jogviszonyban álló azon személyek, akiknek feladatkörébe tartozik a Számítógépes Napló bármilyen formájú használata, karbantartása.
+ * Az Intézménnyel tanulói jogviszonyban állók.
+
+Az adatbázisba a fentebb felsorolt adatalanyok következő adatai kerülnek be:
+
+ * Az Intézménnyel nem tanulói jogviszonnyal rendelkező személyek esetében:
+ * név / leánykori név
+ * személyre szóló kód
+ * belépési jelszó
+
+Egyéb adatok csak az érintett hozzájárulásával rögzíthetők az elektronikus rendszerben.
+
+Az Intézménnyel tanulói jogviszonyban álló személyek esetében:
+
+ * Tanuló neve
+ * Tanuló tanügyi azonosító száma
+ * Tanuló iskolája - kollégiumi tanuló esetén
+ * Iskolatípus
+ * Osztály / csoport
+ * Születési hely
+ * Születési idő
+ * Állampolgársága
+ * Anyja neve:
+ * Anyja foglalkozása
+ * Anyja telefonszáma
+ * Lakóhely
+ * Lakcím
+ * Megye
+ * Irányítószám
+ * Apa / Gondviselő neve
+ * Apa / Gondviselő foglalkozása
+ * Apa / Gondviselő telefonszáma
+ * Apa / Gondviselő értesítési címe
+ * Beiratkozás dátuma
+ * Diákigazolvány száma
+ * Diákigazolvány kiadási dátuma
+ * Személyi igazolvány száma / külföldinél útlevélszám
+ * Tartózkodási okirat / külföldinél /
+ * Társadalombiztosítási Azonosító Jel
+ * Adóazonosító
+ * Beírási napló száma
+ * Tanuló előző iskolája
+ * Tanult szakma
+ * Tanuló fényképe
+ * Tanuló tantárgyai
+ * Tanuló tantárgyak szerinti osztályzatai
+ * Tanuló tantárgyak és dátum szerinti hiányzásai
+ * Tanuló dicséretei, fegyelmi fokozatai
+
+Jelölt állapotok a tanuló-nyilvántartásban, közvetlen adatokat nem tartalmaz:
+
+ * Elvált szülők
+ * Magántanuló
+ * Vendégtanuló
+ * Térítési díjat fizető
+ * Tandíjat fizető
+ * Jogviszonyt szüneteltet
+ * Kollégista
+ * Évismétlő
+ * 3, v. több gyerekes család
+ * Rendszeres gyermekvédelmi támogatás
+ * Tartósan beteg
+ * Állami gondozott
+ * Veszélyeztetett
+ * Mozgássérült
+ * Beszédfogyatékos
+ * Hallássérült
+ * Diszlexia
+ * Diszkalkúlia
+ * Diszgráfia
+
+A fenti felsorolásban nem szereplő adatok csak az érintett írásbeli hozzájárulása alapján kerülhetnek be az adatbázisba. Ennek jelenleg indoka nincs.
+
+Az adatbázisba bekerülő adatok kezelésének jogalapja:
+
+ * Az Intézménnyel nem tanulói jogviszonyban álló személyek adatai közül:
+ * A név adata a Közoktatási törvény 2. sz. melléklete alapján
+ * A tanulói jogviszonyban álló személyek adatai közül a felsoroltak:
+ * a Közoktatási törvény 2. sz. melléklete alapján kerülhetnek be az adatbázisba. (Ezen belül a hivatkozott törvényhely alapján a tanulók jövedelmi és szociális helyzetét igazoló, illetve az egyes juttatások megállapításához szükséges adatoknak minősülnek a fentebb megjelölt adatok.)
+ * a diákigazolványról szóló 30/1999 (II. 15.) Kormányrendelet 6. 5.bek-ben foglalt rendelkezés alapján kerülhetnek az adatbázisba
+ * a személyi jövedelemadóról szóló 1995.évi CXVII. tv.36.-ban, valamint Az adózás rendjéről szóló1990.évi XCI. Tv. 45. (2) - (5) bek.-ben foglalt rendelkezés alapján kerülnek be az adatbázisba
+ * a társadalombiztosítási ellátásokról szóló 1997.évi LXXX. tv. végrehajtására kiadott 195/1997 (XI. 5.) Kormányrendelet 24. -ban foglalt rendelkezés alapján kerülhetnek be az adatbázisba
+
+=== 4. Az adatbázisba bekerülő adatok felvételének formája, az adatok forrása, az adatbevitelre jogosultak köre, az adatbevitel módja ===
+
+4.1. Az adatfelvétel formája
+
+Az adatbázisba bekerülő adatok felvétele minden esetben írásbeli formában történik. Szóbeli közlés alapján az adatbázisba semmilyen adat nem kerülhet be.
+4.2. Az adatok forrása
+
+A nem tanulói jogviszonyban álló személyek adatainak forrása minden esetben a Csepel-Sziget Műszaki Szakközépiskola, Szakiskola és Kollégium által kezelt nyilvántartás.
+
+A tanulói jogviszonyban álló személyek esetén:
+
+ * A Felvételi Jelentkezési Lap
+ * Az Intézményi Adatközlő Lap
+ * Adatváltozás jelentő Lap
+ * Haladási Napló
+ * Csoportnapló
+
+4.3. Az adatbevitelre jogosultak köre
+
+Azon adatok bevitele, amelyek forrása az alkalmazotti nyilvántartás, az adatok bevitele a tanügyi-koordinációs gyakorlati oktatásvezető, illetve az általa megbízott feladata.
+
+Azon adatok bevitele, amelyek forrása a Felvételi Jelentkezési Lap, az Intézményi Adatközlő Lap, és az Adatváltozás jelentő Lap, az adatok bevitele a tanulmányi csoport, a tanügyi-koordinációs gyakorlati oktatásvezető, illetve az általa megbízott feladata.
+
+Azon adatok bevitele, amelyeknek forrása a Haladási Napló, vagy Csoportnapló, az adatok bevitele az osztályfőnök, illetve az igazgató, és a tanügyi-koordinációs gyakorlati oktatásvezető által megbízott személyek feladata.
+
+4.4. Az adatbevitel módja
+
+Az adatbázisba bevitt adatok nem térhetnek el az adat forrásául szolgáló iratban szereplő adattól. Az adatok egyezőségéért az adatbevitelt végző személy felelősséggel tartozik.
+
+Amennyiben az adatok forrásául szolgáló iratban szereplő adat értelmezhetetlen, olvashatatlan, ellentmondásos vagy hiányos, abban az esetben az adat nem vihető be az adatbázisba. Ilyen esetben az adat forrásául szolgáló irat kijavítását illetve kiegészítését kell kérni az adatalanytól.
+
+A kijavítás minden esetben Adatváltozás jelentő Lap kitöltésével történik.
+
+Az adatbázis adatainak kiegészítése az eredeti Adatközlő Lap kiegészítésével történik azzal, hogy a kiegészítést csak az adatalany (vagy az eredeti irat kiállítója) végezheti el és a kiegészítés tényét és időpontját sajátkezű aláírásával igazolja.
+
+Az adatok kijavítása, illetve kiegészítése szóbeli közlés alapján nem történhet.
+
+Az adatok bevitele során olyan körülményeket kell biztosítani, hogy az adatokhoz illetéktelen személyek ne férhessenek hozzá.
+
+Az adatok bevitele után az adat forrásául szolgáló iratokat az Iratkezelési Szabályzatnak megfelelően kell tárolni és megőrizni.
+
+A fentiekben leírt körülmények és feltételek biztosítása az adatbevitelt végző személy közvetlen felettesének kötelezettsége.
+
+=== 5. Adathelyesbítés, adatváltozás ===
+
+Tekintettel az adatok pontosságának, teljességének, időszerűségének és valódiságának követelményére, az adatbázisban szereplő adatok helyesbítésére, illetve az adatok változásának átvezetésére az adatkezelés időtartama alatt bármikor mód van.
+
+5.1. Az adatok helyesbítése
+
+Az adatok helyesbítése történhet az adatalany kérésére, illetve akkor, ha az adatkezelő hivatalból észleli, hogy az adatbázisban nem valós adat szerepel.
+
+Az adatalany kérésére történő helyesbítés esetén a helytelen adat törlésére és a valós adat bevitelére csak az adatalany írásbeli bejelentése alapján kerülhet sor.
+
+Az adatalany bejelentéséhez köteles csatolni az általa bejegyezni kért adat valódiságát alátámasztó dokumentumot.
+
+Az Intézmény által kezdeményezett adathelyesbítés esetén a valótlan adat törlésére és a valós adat bevitelére csak akkor kerülhet sor, ha a törölni kívánt adat valótlansága minden kétséget kizáró módon megállapítható és a bevinni kívánt adat valódiságát igazoló dokumentum az adatkezelő rendelkezésére áll.
+
+5.2. Az adatok változása
+
+Az adatbázisban szereplő adatok megváltozása esetén a változás tényét és a megváltozott adat pontos tartalmát az osztályfőnökök havonta az Adatváltozás jelentő Lap-on kötelesek írásban bejelenteni tanulmányi csoport részére.
+
+A bejelentés elmulasztásával, kapcsolatos jogkövetkezmények az adatalanyt terhelik.
+
+=== 6. Adatbiztonság ===
+
+A rendszer adatbiztonsági követelményeinek betartásáért az Intézményi Rendszergazda felelős.
+
+Ezen tevékenysége során köteles biztosítani azt, hogy a rendszer az alábbi adatbiztonsági követelményeknek folyamatosan megfeleljen.
+A rendszergazda
+
+ * kizárólagosan engedélyezi bármely személy számára a hozzáférési jogosultságot
+ * gondoskodik a szükséges, rendszeres karbantartásról
+ * gondoskodik arról, hogy az adatbázis-szerver megfelelő fizikai védelemmel ellátott zárt helyiségben kerüljön elhelyezésre
+ * biztosítja, hogy az adatbázis-szerver közvetlen hálózati úton ne legyen elérhető és a rendszer feltörése hálózati hozzáféréssel ne legyen lehetséges
+ * biztosítja, hogy minden felhasználó csak egyéni azonosítás után léphessen a rendszerbe
+ * gondoskodik arról, hogy a legutóbbi adatmódosítás tényét, időpontját és elvégzőjét a rendszer naplózza ( a naplózási bejegyzés rögzítése 3 hónap után törölhető)
+ * biztosítja, hogy az adatokról naponta biztonsági mentés készüljön
+
+=== 7. Hozzáférési jogosultságok ===
+
+7.1. Célhozkötöttség
+
+A Számítógépes Naplóban kezelt személyes adatokhoz való hozzáférés a célhozkötöttség és az önrendelkezés elvén, valamint a hivatkozott jogszabályok rendelkezésein alapul. Minden felhasználó a meghatározott adatkezelési célhoz szükséges mértékben és ideig férhet hozzá a személyes adatokhoz.
+
+Minden adatalany jogosult közvetlen számítógépes hozzáféréssel megismerni a rendszerben kezelt adatainak teljes körét, továbbá felvilágosítást kérni az adatkezelés céljáról, az adatok továbbításáról, az adattovábbítás címzettjéről és időpontjáról, s e joga csak törvényben szabályozott esetekben korlátozható.
+
+Az Intézmény közalkalmazottainak és munkavégzésre irányuló egyéb jogviszonyban foglalkoztatottainak neve, beosztása, feladatköre, illetőleg az általuk oktatott tárgyak az Intézmény honlapján bárki által korlátozás nélkül megismerhetők.
+
+7.2. A hozzáférés gyakorlása
+
+A rendszer felhasználói - jogosultsági szintjük alapján - az egyes adatfajtákhoz csak olvasási, vagy írás és olvasási jogosultsággal férhetnek hozzá.
+
+A megismert adatokról az adott adattal kapcsolatban hozzáférési jogosultsággal rendelkező személy nyomtatványt készíthet.
+
+A nyomtatást végző személy köteles gondoskodni a kinyomtatott adatok célhoz-kötöttségen alapuló felhasználásáról, továbbá arról, hogy a kinyomtatott adatok ne kerülhessenek illetéktelenek tudomására.
+
+A hozzáférési jogosultságok gyakorlása a Számítógépes Naplóban személyre szóló kód és jelszó alkalmazásával történik.
+
+7.3. Személyre szóló jogosultság kérése, megadása
+
+A felhasználók személyre szóló jogosultságukat, illetve személyes kódjukat a tanügyi-koordinációs gyakorlati oktatásvezetőtől kapják.
+
+A tanulók hozzáférési jogosultságának megállapítása, illetve kódjuk generálása adataiknak a rendszerbe való bevitelét követően, külön kérés nélkül történik.
+
+A kódot az Intézmény a tanuló gondviselőjével, illetve nagykorúság esetén a tanulóval írásban közli.
+
+A tanulók kivételével a felhasználók jogosultságuk megadásával egyidejűleg nyilatkozatban vállalják hozzáférési jogosultságuk jogszerű felhasználását. A nyilatkozat szövege a jelen szabályzat Mellékletét képezi.
+
+7.4. Jogosultsági szintek
+
+A számítógépes tanulmányi rendszerben tárolt adatokhoz való hozzáférés az alábbi jogosultsági szintek alapján történik:
+
+7.4.1. Az adatkezelés törvényességéért és a jelen szabályzat betartásáért felelős tanügyi-koordinációs gyakorlati oktatásvezető, valamint a rendszer számítástechnikai üzemeltetését végző Rendszergazda a rendszerben tárolt összes adathoz, írás és olvasási jogosultsággal hozzáférhet, a Rendszergazda azonban e hozzáférési jogosultságát csak a tanügyi-koordinációs gyakorlati oktatásvezető eseti engedélyével használhatja.
+
+7.4.2. Az Intézmény minőségügyi csoportvezetője, tanügyi adminisztrátora olvasási joggal hozzáférhet az összes tanulói adathoz, a tanügyi adminisztrátor írási joggal a beiratkozási adatokhoz.
+
+7.4.3. Az Intézmény igazgatója, igazgatóhelyettesei a felvett tanulók összes adatához olvasási jogosultsággal hozzáférhetnek, a tantárgyi érdemjegyek téves bejegyzéseinek javítására írási jogosultsággal rendelkezek.
+
+7.4.4. Az Intézmény tanárai, oktatói olvasási joggal hozzáférhetnek az összes tanuló adataihoz, írási joggal az általuk oktatott tantárgy érdemjegyeihez, hiányzásaihoz. Tantárgyak felvételére csak az osztályfőnök jogosult. Tantárgyak érdemjegyeinek módosítása csak az igazgatóhelyettesek hozzáférési jogosultságán keresztül lehetséges.
+
+7.4.5. A tanuló és gondviselője olvasási joggal hozzáférhet saját adataihoz, valamint tantárgyi érdemjegyeihez és hiányzásaihoz.
+
+=== 8. Adattovábbítás ===
+
+A számítógépes tanulmányi rendszerből egyedi adatok személyazonosításra alkalmas módon az alábbi adatkezelőknek továbbíthatók:
+
+ * a TB törvény felhatalmazása alapján a társadalombiztosítási jogviszonnyal összefüggő adatok az Országos Egészségbiztosítási Pénztárnak, illetve a Budapesti Társadalombiztosítási Igazgatóságnak;
+ * az SzJA törvény felhatalmazása alapján az adózással összefüggő adatok az APEH Budapesti Igazgatóságának;
+ * a Közoktatási törvény felhatalmazása alapján a tanulók nevét, születési helyét és idejét tartalmazó nyilvántartás adatai az Oktatási Minisztérium nyilvántartása számára;
+ * a normatív finanszírozásához szükséges adatok a fenntartó Fővárosi Önkormányzat számára a Közoktatási törvény felhatalmazása alapján
+ * a diákigazolványról szóló kormányrendelet felhatalmazása alapján a rendeletben megjelölt adatokat a diákigazolvány kibocsátójának,
+
+A rendszerben tárolt adatok statisztikai felhasználás céljára személyazonosításra alkalmatlan módon más adatkezelőnek továbbíthatók.
+
+=== 9. Záró rendelkezések ===
+
+A Számítógépes Napló koordinációjáról, a rendszer működtetésében, fejlesztésében, karbantartásában közreműködő szervezetek munkájának összehangolásáról a tanügyi-koordinációs gyakorlati oktatásvezető, és a minőségügyi csoportvezető gondoskodik.
+
+A Intézményi Rendszergazda gondoskodik a Számítógépes Napló adatvédelmének rendszeres ellenőrzéséről, a műszaki, illetőleg a jogi környezet változásai által szükségessé tett változtatások végrehajtásáról és dokumentálásáról.
+
+=== Melléklet: ===
+
+Adatkezelői nyilatkozat:
+
+A tárolt adatokat a Csepel-Sziget Műszaki Szakközépiskola, Szakiskola és Kollégium az Adatvédelmi Törvény és a Közoktatási Törvény rendelkezései és a "Csepel-Sziget Műszaki Szakközépiskola, Szakiskola és Kollégium Számítógépes Naplójának Adatvédelmi Szabályzata" szerint kezeli.
+
+A jogszabályban foglaltak szerint az adatkezeléssel megbízott személyek csak a munkakörük szerint előírt adatokat kezelhetik. Azt a számítógépet, amelyre a fenti jogosultság érvényes, biztosan zárható helyiségben kell elhelyezni, a számítógépet belépési védelemmel kell ellátni és biztosítani kell, hogy csak a feljogosított személy férhessen hozzá az adatokhoz.
+
+Gondoskodni kell arról, hogy a belépési jelszavak ne kerülhessenek illetéktelen kezekbe. Gondoskodni kell arról, hogy amikor a számítógépen az adatbázissal dolgoznak, illetéktelenek ne olvashassák le a képernyőről az adatokat.
+
+Az adatbázisból nyomtatni csak olyan adatokat szabad, amire a munka végzéséhez közvetlenül szükség van. A kinyomtatott adatokat kizárólag az Intézmény használhatja fel, más intézménynek vagy magánszemélynek továbbadni nem szabad.
+
+Amint az a munkafolyamat befejeződött, amelyhez a nyomtatványra szükség volt, a nyomtatványt meg kell semmisíteni. Bármilyen adat harmadik személynek való átadása csak az Intézmény igazgatójának írásos engedélye alapján lehetséges.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatszolgaltatas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatszolgaltatas.txt
new file mode 100644
index 00000000..ec754a53
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatszolgaltatas.txt
@@ -0,0 +1,64 @@
+====== Adatszolgáltatási kötelezettségek ======
+
+===== Az általános iskolák fele =====
+
+==== 1993. évi LXXIX. törvény a közoktatásról ====
+
+40. § (4) E törvény alapján a közoktatási intézményben a 2. számú
+mellékletben meghatározott adatokat kell nyilvántartani és kezelni.
+
+==== 2. számú melléklet az 1993. évi LXXIX. törvényhez ====
+
+A tanuló fejlődésének nyomon követése
+
+2. A középiskola és a szakiskola minden év október 31-éig értesíti
+az általános iskolát arról, hogy az ott végzett tanulók - a
+középiskola, illetve a szakiskola első két évfolyamán - a tanítási
+év végén milyen tanulmányi eredményt értek el. A középiskola és a
+szakiskola megküldi az általános iskolának a tanuló nevét, oktatási
+azonosítóját, továbbá az elért tanulmányi eredményeket. Az
+általános iskola a megküldött adatokat feldolgozza, és
+személyazonosításra alkalmatlan módon az iskola honlapján, annak
+hiányában a helyben szokásos módon nyilvánosságra kell hozni.
+
+===== Októberi statisztika =====
+
+==== 20/1997. (II. 13.) Korm. rendelet - a közoktatásról szóló 1993. évi LXXIX. törvény végrehajtásáról ====
+
+=== A közoktatási intézmények információs tájékoztató rendszere ===
+
+12/C. § (1) A közoktatási feladatot ellátó intézmény az e rendelet 4. számú mellékletében meghatározottak szerint köteles minden év október 31-éig, illetve adatváltozás esetén a 12/B. § (4) bekezdésében meghatározott adatszolgáltatással egyidejűleg közérdekű információkat szolgáltatni.
+
+(2) A közoktatási feladatot ellátó intézmények információs tájékoztató rendszerének (a továbbiakban: tájékoztató rendszer) alapjául szolgáló adatok begyűjtéséhez szükséges kérdőív elektronikus formában a KIR honlapján érhető el.
+
+(3) Ha a közoktatási feladatot ellátó intézményt törlik a közoktatási intézménytörzsből, a törlés együtt jár a közoktatási feladatot ellátó intézménynek a tájékoztató rendszerből történő törlésével.
+
+(4) Az adatok az internetről letölthetők, illetve - a költségek megtérítése ellenében - jegyzék formájában kinyomtathatók. Az önkormányzati pedagógiai-szakmai szolgáltató intézmények biztosítják, hogy a tájékoztató rendszer közérdekű adatokat tartalmazó adatbázisába bárki ingyenesen betekinthessen.
+
+==== 4. számú melléklet a 20/1997. (II. 13.) Korm. rendelethez ====
+
+A közoktatási intézmények információs tájékoztató rendszerében tárolható adatok köre
+
+A közérdekű adatok nyilvánosságra hozatala - amennyiben egyéb jogszabályok nem tiltják - nem kötött a közoktatási feladatot ellátó intézmények engedélyéhez. A közérdekűnek nem minősített, de a KIR részét képező adatok kizárólag az intézmények vagy érintett személyek beleegyezésével hozhatók nyilvánosságra. A közérdekű adatok kezelését a Közoktatás Információs Rendszere biztosítja. A közérdekű adatok feldolgozásából keletkező adatok, illetve információk szintén közérdekűnek minősülnek.
+
+Közérdekű adatok köre:
+
+ - Intézmények és telephelyeik azonosítására, illetve elérhetőségére vonatkozó adatok.
+ - Intézmények által ellátott közoktatási és egyéb feladatok részletező adatai, illetve a külön jogszabályban meghatározott nyilvántartási és akkreditációs számok.
+ - Intézmények szervezésének formája és módja.
+ - Intézmények alapító okirata és az alapító okirattal összefüggésbe hozható egyéb okiratok.
+ - Intézményfenntartók azonosítására, illetve elérhetőségére vonatkozó adatok.
+ - Intézmények és telephelyek földrajzi elhelyezkedésére vonatkozó és ezzel összefüggésbe hozható adatok.
+ - Intézmények pedagógiai, nevelési, szakmai és egyéb programjaira vonatkozó és ezzel összefüggésbe hozható adatok.
+ - Intézmények tanulmányi, kulturális, sport- és egyéb verseny eredményei.
+ - Vizsgaeredmények statisztikai adatai intézményi bontásban.
+ - Intézmények minőségbiztosítási tevékenységét jellemző és ezzel összefüggésbe hozható adatok.
+ - Intézményekben működő szervezetekre vonatkozó és ezzel összefüggésbe hozható adatok.
+ - Humán erőforrásokra vonatkozó és ezzel összefüggésbe hozható adatok.
+ - Tárgyi erőforrásokra vonatkozó és ezzel összefüggésbe hozható adatok.
+ - Gyermekre, illetve tanulókra vonatkozó létszám és ezzel összefüggésbe hozható egyéb adatok.
+ - Gyermek- és diákjóléti adatok.
+ - Beiskolázásra, illetve továbbtanulásra vonatkozó és ezzel összefüggésbe hozható statisztikai adatok.
+ - Tankönyvkiadókra, tankönyvjegyzékre, intézményekben használt tankönyvekre, illetve taneszközökre vonatkozó adatok.
+ - Szakértői, vizsgáztatói és egyéb névjegyzékek, valamint ezekkel összefüggésbe hozható adatok.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatvedelem.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatvedelem.txt
new file mode 100644
index 00000000..c31db424
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/adatvedelem.txt
@@ -0,0 +1,174 @@
+====== A közoktatási intézményekben nyilvántartott és kezelt személyes és különleges adatok ======
+
+2. számú melléklet az 1993. évi LXXIX. törvényhez (A törvény 40. §-ához)
+
+===== Az alkalmazottak adatai =====
+
+1. E törvény alapján nyilvántartott adatok:
+
+a) név, születési hely és idő, állampolgárság;
+
+b) lakóhely, tartózkodási hely, telefonszám, azonosító szám;
+
+c) munkaviszonyra, közalkalmazotti jogviszonyra vonatkozó adatok
+
+- iskolai végzettség, szakképesítés, alkalmazási feltételek igazolása,
+
+- munkában töltött idő, közalkalmazotti jogviszonyba beszámítható idő, besorolással kapcsolatos adatok,
+
+- alkalmazott által kapott kitüntetések, díjak és más elismerések, címek,
+
+- munkakör, munkakörbe nem tartozó feladatra történő megbízás, munkavégzésre irányuló további jogviszony, fegyelmi büntetés, kártérítésre kötelezés,
+
+- munkavégzés ideje, túlmunka ideje, munkabér, illetmény, továbbá az azokat terhelő tartozás és annak jogosultja,
+
+- szabadság, kiadott szabadság,
+
+- alkalmazott részére történő kifizetések és azok jogcímei,
+
+- az alkalmazott részére adott juttatások és azok jogcímei,
+
+- az alkalmazott munkáltatóval szemben fennálló tartozásai, azok jogcímei,
+
+- a többi adat az érintett hozzájárulásával.
+
+2. Az 1. pontban felsorolt adatokat a magasabb vezető tekintetében a munkáltatói jog gyakorlója kezeli.
+
+3. Az 1. pontban felsorolt adatok továbbíthatók a fenntartónak, a kifizetőhelynek, bíróságnak, rendőrségnek, ügyészségnek, helyi önkormányzatnak, közigazgatási szervnek, a munkavégzésre vonatkozó rendelkezések ellenőrzésére jogosultaknak, a nemzetbiztonsági szolgálatnak.
+
+===== A gyermekek, tanulók adatai =====
+
+1. E törvény alapján nyilvántartott adatok:
+
+a) gyermek, tanuló neve, születési helye és ideje, állampolgársága, lakóhelyének, tartózkodási helyének címe, telefonszáma, nem magyar állampolgár esetén a Magyar Köztársaság területén való tartózkodás jogcíme és a tartózkodásra jogosító okirat megnevezése, száma;
+
+b) szülő neve, lakóhelye, tartózkodási helye, telefonszáma;
+
+c) a gyermek óvodai fejlődésével kapcsolatos adatok;
+
+d) a tanulói jogviszonnyal kapcsolatos adatok
+
+- felvételivel kapcsolatos adatok,
+
+- a tanuló magatartásának, szorgalmának és tudásának értékelése és minősítése, vizsgaadatok,
+
+- a tanulói fegyelmi és kártérítési ügyekkel kapcsolatos adatok,
+
+- a sajátos nevelési igényre vonatkozó adatok,
+
+- beilleszkedési, tanulási, magatartási nehézséggel küzdő gyermek, tanuló rendellenességére vonatkozó adatok,
+
+- a tanuló- és gyermekbalesetre vonatkozó adatok,
+
+- a tanuló diákigazolványának sorszáma,
+
+- a tanuló azonosító száma,
+
+- a tankönyvellátással kapcsolatos adatok,
+
+- a többi adat az érintett hozzájárulásával.
+
+2. Az adatok - az e törvényben meghatározott célból, a személyes adatok védelmére vonatkozó célhoz kötöttség megtartásával - továbbíthatók
+
+- fenntartó, bíróság, rendőrség, ügyészség, önkormányzat, közigazgatási szerv, nemzetbiztonsági szolgálat részére valamennyi adat,
+
+- sajátos nevelési igényre, a beilleszkedési zavarra, tanulási nehézségre, magatartási rendellenességre vonatkozó adatok a pedagógiai szakszolgálat intézményeitől a nevelési-oktatási intézménynek, illetve vissza,
+
+- az óvodai fejlődéssel, iskolába lépéshez szükséges fejlettséggel kapcsolatos adatok a szülőnek, a pedagógiai szakszolgálat intézményeinek, az iskolának,
+
+- a magatartás, szorgalom és tudás értékelésével kapcsolatos adatok az érintett osztályon belül, a nevelőtestületen belül, a szülőnek, a vizsgabizottságnak, a gyakorlati képzés szervezőjének, a tanulószerződés kötőjének, illetve, ha az értékelés nem az iskolában történik, az iskolának, iskolaváltás esetén az új iskolának, a szakmai ellenőrzés végzőjének,
+
+- a diákigazolvány - jogszabályban meghatározott - kezelője részére a diákigazolvány kiállításához szükséges valamennyi adat,
+
+- a gyermek óvodai felvételével, átvételével kapcsolatosan az érintett óvodához, iskolai felvételével, átvételével kapcsolatosan az érintett iskolához, felsőoktatási intézménybe történő felvétellel kapcsolatosan az érintett felsőoktatási intézményhez és vissza,
+
+- az egészségügyi, iskola-egészségügyi feladatot ellátó intézménynek a gyermek, tanuló egészségügyi állapotának megállapítása céljából,
+
+- a családvédelemmel foglalkozó intézménynek, szervezetnek, gyermek- és ifjúságvédelemmel foglalkozó szervezetnek, intézménynek a gyermek, tanuló veszélyeztetettségének feltárása, megszüntetése céljából,
+
+- az állami vizsgák alapján kiadott bizonyítványokat nyilvántartó szervezetnek a bizonyítványok nyilvántartása céljából, továbbá a nyilvántartó szervezettől a felsőfokú felvételi kérelmeket nyilvántartó szervezethez,
+
+- a tankönyvforgalmazókhoz, a külön törvényben meghatározott körben és célból.
+
+3. A nevelési-oktatási intézmény nyilvántartja azokat az adatokat, amelyek a jogszabályokban biztosított kedvezményekre való igényjogosultság elbírálásához és igazolásához szükségesek. E célból azok az adatok kezelhetők, amelyekből megállapítható a jogosult személye és a kedvezményre való jogosultsága.
+
+===== Adatkezelés a közoktatási intézményekben =====
+
+1. A pedagógust, a nevelő és oktató munkát közvetlenül segítő alkalmazottat, továbbá azt, aki közreműködik a gyermek, tanuló felügyeletének az ellátásában (a továbbiakban e rendelkezések alkalmazásában együtt: pedagógus) hivatásánál fogva harmadik személyekkel szemben titoktartási kötelezettség terheli a gyermekkel, a tanulóval és családjával kapcsolatos minden olyan tényt, adatot, információt illetően, amelyről a gyermekkel, tanulóval, szülővel való kapcsolattartás során szerzett tudomást. E kötelezettség független a foglalkoztatási jogviszony fennállásától, és annak megszűnése után, határidő nélkül fennmarad. A gyermek, illetve a kiskorú tanuló szülőjével minden, a gyermekével összefüggő adat közölhető, kivéve, ha az adat közlése súlyosan sértené vagy veszélyeztetné a gyermek, tanuló érdekét. Az adat közlése akkor sérti vagy veszélyezteti súlyosan a gyermek, tanuló érdekét, ha olyan körülményre (magatartásra, mulasztásra, állapotra) vonatkozik, amely a gyermek, tanuló testi, értelmi, érzelmi vagy erkölcsi fejlődését gátolja vagy akadályozza, és amelynek bekövetkezése szülői magatartásra, közrehatásra vezethető vissza. A nagykorú tanuló szülőjével az e törvény 11. §-ának (6) bekezdésében meghatározott adat közölhető. A titoktartási kötelezettség nem terjed ki a nevelőtestületi értekezleten a nevelőtestület tagjainak egymásközti, a gyermek, a tanuló fejlődésével, értékelésével, minősítésével összefüggő megbeszélésre. A titoktartási kötelezettség kiterjed mindazokra, akik részt vettek a nevelőtestület ülésén. A titoktartási kötelezettség alól kiskorú esetén a szülő, nagykorú tanuló esetén a tanuló írásban felmentést adhat.
+
+2. Az 1. pontban meghatározott titoktartási kötelezettség nem vonatkozik a gyermekek, tanulók adatainak az e törvény 2. számú mellékletében meghatározott nyilvántartására és továbbítására. A közoktatási intézmény a gyermekek, tanulók személyes adatait pedagógiai célból, pedagógiai célú habilitációs és rehabilitációs feladatok ellátása céljából, gyermek- és ifjúságvédelmi célból, iskola-egészségügyi célból, az e törvényben meghatározott nyilvántartások céljából, a célnak megfelelő mértékben, célhoz kötötten kezelhetik. Az e törvényben meghatározottakon túlmenően a közoktatási intézmény a gyermekkel, tanulóval kapcsolatban adatokat nem közölhet.
+
+3. A pedagógus, illetve a nevelő és oktató munkát segítő alkalmazott az óvoda vezetője, az iskola, kollégium igazgatója (vezetője) útján - a gyermekek védelméről és a gyámügyi igazgatásról szóló törvény 17. §-ára is tekintettel - köteles az illetékes gyermekjóléti szolgálatot haladéktalanul értesíteni, ha megítélése szerint a gyermek, a kiskorú tanuló - más vagy saját magatartása miatt - súlyos veszélyhelyzetbe kerülhet vagy került. Ebben a helyzetben az adattovábbításhoz az érintett, illetve az adattal kapcsolatosan egyébként rendelkezésre jogosult beleegyezése nem szükséges.
+
+4. A közoktatási intézmények az alkalmazottak személyes adatait csak a foglalkoztatással, juttatások, kedvezmények, kötelezettségek megállapításával és teljesítésével, állampolgári jogok és kötelezettségek teljesítésével kapcsolatosan, nemzetbiztonsági okokból, az e törvényben meghatározott nyilvántartások kezelése céljából, a célnak megfelelő mértékben, célhoz kötötten kezelhetik.
+
+5. Adattovábbításra a közoktatási intézmény vezetője és - a meghatalmazás keretei között - az általa meghatalmazott vezető vagy más alkalmazott jogosult.
+
+6. Az iratkezelési szabályzatban, ha ilyen készítése nem kötelező, a közoktatási intézmény szervezeti és működési szabályzatának mellékleteként kiadott adatkezelési szabályzatban kell meghatározni az adatkezelés és -továbbítás intézményi rendjét. Az adatkezelés időtartama nem haladhatja meg az irattári őrzési időt. Az adatkezelési szabályzat elkészítésénél, illetve módosításánál nevelési-oktatási intézményben a szülői szervezetet (közösséget) és az iskolai, kollégiumi diákönkormányzatot egyetértési jog illeti meg.
+
+7. Önkéntes adatszolgáltatás esetén a tanulót, kiskorú tanuló esetén a szülőt is tájékoztatni kell arról, hogy az adatszolgáltatásban való részvétel nem kötelező. Kiskorú tanulónak az önkéntes adatszolgáltatásba történő bevonásához be kell szerezni a szülő engedélyét.
+
+===== Az adatok statisztikai célú felhasználása =====
+
+A mellékletben felsorolt adatok statisztikai célra felhasználhatók, és statisztikai felhasználás céljára személyazonosításra alkalmatlan módon átadhatók.
+
+
+====== Számítástechnikai rendszer és adatok elleni bűncselekmény ======
+
+===== 1978. évi IV. törvény 300/C. § =====
+
+(1) Aki számítástechnikai rendszerbe a számítástechnikai rendszer védelmét szolgáló intézkedés megsértésével vagy kijátszásával jogosulatlanul belép, vagy a belépési jogosultsága kereteit túllépve, illetőleg azt megsértve bent marad, vétséget követ el, és egy évig terjedő szabadságvesztéssel, közérdekű munkával vagy pénzbüntetéssel büntetendő.
+
+(2) Aki
+
+a) számítástechnikai rendszerben tárolt, feldolgozott, kezelt vagy továbbított adatot jogosulatlanul megváltoztat, töröl vagy hozzáférhetetlenné tesz,
+
+b) adat bevitelével, továbbításával, megváltoztatásával, törlésével, illetőleg egyéb művelet végzésével a számítástechnikai rendszer működését jogosulatlanul akadályozza, vétséget követ el, és két évig terjedő szabadságvesztéssel, közérdekű munkával vagy pénzbüntetéssel büntetendő.
+
+(3) Aki jogtalan haszonszerzés végett
+
+a) a számítástechnikai rendszerbe adatot bevisz, az abban tárolt, feldolgozott, kezelt vagy továbbított adatot megváltoztat, töröl vagy hozzáférhetetlenné tesz, vagy
+
+b) adat bevitelével, továbbításával, megváltoztatásával, törlésével, illetőleg egyéb művelet végzésével a számítástechnikai rendszer működését akadályozza,
+
+és ezzel kárt okoz, bűntettet követ el, és három évig terjedő szabadságvesztéssel büntetendő.
+
+(4) A (3) bekezdésben meghatározott bűncselekmény büntetése
+
+a) egy évtől öt évig terjedő szabadságvesztés, ha a bűncselekmény jelentős kárt okoz,
+
+b) két évtől nyolc évig terjedő szabadságvesztés, ha a bűncselekmény különösen nagy kárt okoz,
+
+c) öt évtől tíz évig terjedő szabadságvesztés, ha a bűncselekmény különösen jelentős kárt okoz.
+
+----
+A bűncselekmény a jogosulatlan belépéssel illetve bennmaradással már akkor is befejezetté válik, ha az elkövető a számítástechnikai rendszerben tárolt vagy feldolgozott adatokban nem végez változtatást, vagy nem törli azokat. A bűncselekmény elkövetője bárki lehet, bennmaradás esetén természetesen az a személy is, aki egyébként jogszerűen lépett be a rendszerbe.
+
+====== Számítástechnikai rendszer védelmét biztosító technikai intézkedés kijátszása ======
+
+===== 1978. évi IV. törvény 300/E. § =====
+
+(1) Aki a 300/C. §-ban meghatározott bűncselekmény elkövetése céljából, az ehhez szükséges vagy ezt könnyítő számítástechnikai programot, jelszót, belépési kódot, vagy számítástechnikai rendszerbe való belépést lehetővé tevő adatot
+
+a) készít,
+
+b) megszerez,
+
+c) forgalomba hoz, azzal kereskedik, vagy más módon hozzáférhetővé tesz,
+
+vétséget követ el, és két évig terjedő szabadságvesztéssel, közérdekű munkával vagy pénzbüntetéssel büntetendő.
+
+(2) Az (1) bekezdés szerint büntetendő, aki a 300/C. §-ban meghatározott bűncselekmény elkövetése céljából az ehhez szükséges vagy ezt könnyítő, számítástechnikai program, jelszó, belépési kód, vagy valamely számítástechnikai rendszerbe való belépést lehetővé tevő adat készítésére vonatkozó gazdasági, műszaki, szervezési ismereteit másnak a rendelkezésére bocsátja.
+
+(3) Nem büntethető az (1) bekezdés a) pontja esetén, aki - mielőtt a bűncselekmény elkövetéséhez szükséges vagy ezt megkönnyítő számítástechnikai program, jelszó, belépési kód, vagy valamely számítástechnikai rendszer egészébe vagy egy részébe való belépést lehetővé tevő adat készítése a hatóság tudomására jutott volna - tevékenységét a hatóság előtt felfedi, és az elkészített dolgot a hatóságnak átadja, valamint lehetővé teszi a készítésben részt vevő más személy kilétének megállapítását.
+
+----
+
+A bűncselekmény védett jogi tárgya a számítástechnikai rendszerek megfelelő működéséhez és a ben­nük tárolt adatok megbízhatóságához, titok­ban maradásához fűződő érdek. A bűncselekményt 2002-től az Európa Tanács Informatikai bűnözésről szóló Egyezménye (Convention on Cyber­crime) hatására léptették életbe 2002. április 1. napjától.
+
+====== Hivatkozás ======
+
+ * [[http://www.magyarorszag.hu/allampolgar/ugyek/buncsjogorv/gazdbuncsel20050728/szamtechell20070913.html/ugyleirasjogi]]
+ * [[http://net.jogtar.hu/jr/gen/getdoc2.cgi?dbnum=1&docid=97800004.TV&cel=P(300/C)B(1)#xcel]]
+ * [[http://www.fogorvostudakozo.hu/index.php?menu=adatvedelem]]
+ * [[http://abiweb.obh.hu/abi/index.php?menu=beszamolok/2003/M/4/1&dok=665_A_2003|Állásfoglalás: az önkormányzat semmiféle ellenőrzés lefolytatása céljából sem kezelheti az iskola által nyilvántartott teljes adatkört, mert erre csak célhoz kötötten kerülhet sor]]
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/bizonyitvany.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/bizonyitvany.txt
new file mode 100644
index 00000000..7a87527b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/bizonyitvany.txt
@@ -0,0 +1,18 @@
+
+====== 11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről ======
+
+A bizonyítvány
+
+7. a) A közoktatásban a tanuló által elvégzett évfolyamokról kiállított év végi bizonyítványokat egy bizonyítványkönyvbe (a továbbiakban együtt: bizonyítvány) kell bevezetni, függetlenül attól, hogy a tanuló hányszor változtatott iskolát, iskolatípust. Az egyes évfolyamokról a bizonyítványt a törzslap alapján kell kiállítani. A tanuló által elvégzett évfolyamokról év végi bizonyítványt kell kiállítani. A bizonyítványban fel kell tüntetni az iskola OM azonosítóját és a tanuló azonosító számát. A bizonyítványban, záradék formájában, fel kell tüntetni az érettségi vizsga, a szakmai vizsga, a művészeti alapvizsga és záróvizsga letételét.
+
+b) Az elveszett vagy megsemmisült bizonyítványról - kérelemre - a törzslap (póttörzslap) alapján másodlat állítható ki. A másodlatért a külön jogszabályban meghatározottak szerint illetéket kell leróni.
+
+c) Törzslap (póttörzslap) hiányában az iskolában meglévő nyilvántartások alapján - kérelemre - pótbizonyítvány állítható ki. A pótbizonyítvány azt tanúsítja, hogy a tanuló melyik évfolyamot, mikor végezte el.
+
+d) Ha az iskolában minden nyilvántartás megsemmisült, a pótbizonyítványban csak azt lehet feltüntetni, hogy az abban megjelölt személy az iskola tanulója volt. Ilyen tartamú pótbizonyítvány akkor állítható ki, ha a volt tanuló
+
+- írásban nyilatkozik arról, hogy a megjelölt tanévben az iskola mely évfolyamán tanult, és
+
+- nyilatkozatához csatolja volt tanárának vagy két évfolyamtársának igazolását.
+
+e) A tanár nyilatkozata akkor fogadható el, ha a jelzett időszakban az iskolában tanított. A volt évfolyamtársaknak be kell mutatniuk bizonyítványukat.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/elszamolas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/elszamolas.txt
new file mode 100644
index 00000000..c794d436
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/elszamolas.txt
@@ -0,0 +1,30 @@
+
+====== Kéthavi elszámolás ======
+
+Közoktatási tv. Harmadik rész II.
+
+6. A pedagógus kötelező óráját az óvodában a gyermekekkel való közvetlen, a teljes óvodai életet magában foglaló foglalkozásra (óvodai foglalkozások), az iskolában és a kollégiumban a tanulókkal való közvetlen foglalkozásra (kötelező és nem kötelező tanórai foglalkozás, egyéni foglalkozás), kollégiumi foglalkozásra, napközis és tanulószobai foglalkozásra kell fordítani. A gyakorlati oktatásvezető és a gyakorlati oktatásvezető-helyettes a kötelező órája keretében ellátja a tanulók gyakorlati és elméleti képzését. A tanulókkal való közvetlen foglalkozás körébe tartozik az osztály közösségi programjainak és a tanulókkal való egyéni törődés feladatainak [52. § (7) bekezdés] megtartása, azoknak a szakköröknek, érdeklődési köröknek, önképző köröknek, tanulmányi, szakmai és kulturális versenyeknek, házi bajnokságoknak, iskolák közötti versenyeknek, továbbá más tanórán kívüli foglalkozásoknak [53. § (2) bekezdés b)-d) pontja] megtartása, amelyeket az iskolai nem kötelező tanórai foglalkozás időkeretének terhére szerveznek, kollégiumban a szabadidő eltöltését szolgáló és az egyéni törődést biztosító foglalkozások [53. § (7) bekezdés] megtartása. A pedagógus-munkakörben foglalkoztatottak munkáját – a munkaidőkeretre vonatkozó rendelkezések [Mt. 118/A. §] alapulvételével – oly módon kell megszervezni, hogy a pedagógus a heti kötelező óraszáma egy tanítási évre jutó időkeretét teljesíteni tudja. Ehhez a munkáltató a pedagógus-munkakörben foglalkoztatottak munkáját legalább kéthavi tanítási időkeret kialakításával szervezi meg. A tanítási időkeretet a következők szerint kell megállapítani: a két hónapra jutó tanítási napok számát meg kell szorozni a pedagógus-munkakörre megállapított heti kötelező óraszám egy ötödével. A tanítási időkeretet az adott tanítási napra a pedagógus kötelező órájának terhére tervezett órák számának megfelelően csökkenteni kell minden olyan kieső tanítási nap után, amely az Mt. 151. §-ának (2) bekezdésében megjelölt távollét napjaira, a keresőképtelenség időtartamára esik. A nevelési-oktatási intézmény vezetője a fenntartó egyetértésével meghatározhatja azokat a távolléteket, amelyekkel a tanítási időkeretet csökkenteni lehet. A tanítási időkeret teljesítésénél a ténylegesen megtartott, továbbá a pedagógus heti kötelező órájának teljesítésébe beszámítható órák vehetők figyelembe. A rendes munkaidőn belül végzett tanításért óradíj a tanítási időkereten felül teljesített többlettanításért állapítható meg.
+
+----
+
+tm = (tto+tkf+ef+kno+eo)-tik
+tkf: tanórán kívüli foglalkozás
+tanítási időkeret = tik
+ténylegesen teljesített tanítási óra = tto
+tanórán kívüli foglalkozás = tkf
+egyéni foglalkozás = ef
+kieső napok miatt levonható órák = kno
+egyéni órakedvezmény = eo
+teljesítménymutató = tm
+
+
+----
+
+Munka Törvénykönyvéről szóló 1992. évi XXII. törvény (Mt.)
+a 117/B. § (1) bekezdésében foglaltak szerint a teljes munkaidő mértéke napi nyolc, heti negyven óra,
+140/A. §-a előírja a rendes és rendkívüli munkaidő nyilvántartását.
+
+----
+
+Miután megállapították a tanítási időkeret teljesítését, át kell térni a heti teljes munkaidő teljesítésének vizsgálatához: meg kell nézni, túllépte-e a pedagógus a napi nyolc, heti 40 órát. A napi tizenkettő, heti negyvennyolc órás munkaidő-korlátozás semmilyen indokkal nem léphető túl! A heti teljes munkaidő túllépése esetén a Munka Törvénykönyve rendkívüli munka díjazásának szabályait tartalmazó 147. §-ának rendelkezései lépnek életbe (lásd még: Kt. 1. sz. melléklet Harmadik rész II/18. pont).
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/ertekeles.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/ertekeles.txt
new file mode 100644
index 00000000..6ccf4c51
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/ertekeles.txt
@@ -0,0 +1,48 @@
+
+====== Osztályozás ======
+
+==== A pedagógus jog és kötelessége az értékelés ====
+
+(1993. évi LXXIX. törvény a közoktatásról):
+
+19. § (1) A pedagógust munkakörével összefüggésben megilleti az a jog, hogy
+
+e) irányítsa és értékelje a gyermekek, tanulók munkáját,
+
+f) minősítse a tanulók teljesítményét,
+
+
+70. §
+
+(1) A pedagógus - a (3) bekezdésben meghatározott kivétellel - a tanuló teljesítményét, előmenetelét tanítási év közben rendszeresen érdemjeggyel értékeli, félévkor és a tanítási év végén osztályzattal minősíti. A tanuló magatartásának és szorgalmának értékelését és minősítését az osztályfőnök - az osztályban tanító pedagógusok véleményének kikérésével - végzi. Az érdemjegyekről a tanulót és a kiskorú tanuló szülőjét rendszeresen értesíteni kell. A félévi és az év végi osztályzatot az érdemjegyek alapján kell meghatározni. Az osztályzatról a tanulót és a kiskorú szülőjét értesíteni kell. Az érdemjegy, illetőleg az osztályzat megállapítása a tanuló teljesítményének, szorgalmának értékelésekor, minősítésekor nem lehet fegyelmezési eszköz.
+
+
+==== Az értékelés formája: osztályzatok, érdemjegyek ====
+
+70. §
+
+(2) Az érdemjegyek és osztályzatok - a (3) bekezdésben meghatározott kivétellel - a következők:
+
+a) a tanuló tudásának értékelésénél és minősítésénél jeles (5), jó (4), közepes (3), elégséges (2), elégtelen (1);
+
+b) a tanuló magatartásának értékelésénél és minősítésénél példás (5), jó (4), változó (3), rossz (2);
+
+c) a tanuló szorgalmának értékelésénél és minősítésénél példás (5), jó (4), változó (3), hanyag (2).
+
+(3) Az első-harmadik évfolyamon - félévkor és év végén, továbbá a negyedik évfolyamon félévkor - szöveges minősítéssel kell kifejezni, hogy a tanuló kiválóan, jól vagy megfelelően teljesített, illetve felzárkóztatásra szorul. Ha a tanuló „felzárkóztatásra szorul” minősítést kap, az iskolának a szülő bevonásával értékelni kell a tanuló teljesítményét, fel kell tárni a tanuló fejlődését, haladását akadályozó tényezőket, és javaslatot kell tenni az azok megszüntetéséhez szükséges intézkedésekre. Az iskola pedagógiai programja, az évközi érdemjegyek, a félévi és az év végi osztályzatok helyett a tanuló teljesítményének, szorgalmának, magatartásának értékelésére, minősítésére a (2) bekezdésben meghatározottaktól eltérő jelölés, illetőleg szöveges értékelés alkalmazását is előírhatja. Ha az iskola nem alkalmazza az (1)-(2) bekezdésben meghatározottakat, de arra iskolaváltás vagy továbbtanulás miatt szükség van, köteles a félévi és az év végi minősítést osztályzattal is elvégezni. Az iskola által alkalmazott jelölés, értékelés érdemjegyre, osztályzatra való átváltásának szabályait a helyi tantervben kell meghatározni. Az iskola pedagógiai programja meghatározhatja azokat a tananyagokat, tantárgyakat, amelyekből a tanuló teljesítményét, előmenetelét nem kell értékelni, illetve minősíteni, továbbá eltekinthet a magatartás és szorgalom értékelésétől és minősítésétől. Nem mellőzhető azonban a tanuló teljesítményének, előmenetelének értékelése és minősítése azokból a tantárgyakból, amelyek követelményeiből állami vizsgát kell, illetve lehet tenni. A szakiskola pedagógiai programjában kell meghatározni, hogy a szakmai előkészítő és szakmai alapozó oktatás, illetve a szakközépiskola pedagógiai programjában kell meghatározni, hogy a szakmai orientáció és a szakmacsoportos alapozó oktatás keretében elsajátított ismereteket hány tantárgy keretei között értékelik és minősítik, továbbá moduláris oktatás esetén az egyes modulok értékelését és minősítését.
+
+(4) Az egyes tanulók év végi osztályzatát a nevelőtestület osztályozó értekezleten áttekinti, és a pedagógus, illetve az osztályfőnök által megállapított osztályzatok alapján dönt a tanuló magasabb évfolyamba lépéséről. Abban az esetben, ha az év végi osztályzat a tanuló hátrányára lényegesen eltér a tanítási év közben adott érdemjegyek átlagától, a nevelőtestület felhívja az érdekelt pedagógust, hogy adjon tájékoztatást ennek okáról, és indokolt esetben változtassa meg döntését. Ha a pedagógus nem változtatja meg döntését, és a nevelőtestület ennek indokaival nem ért egyet, az osztályzatot az évközi érdemjegyek alapján a tanuló javára módosítja.
+
+(5) A tanuló értékelésekor, minősítésekor az (1) és (4) bekezdésben meghatározottakat - az érdemjegy és az osztályzat alkalmazására vonatkozó rendelkezések kivételével - akkor is alkalmazni kell, ha az iskola nem használja az érdemjegy, illetőleg az osztályzat megjelölést.
+
+(6) Ha a tanuló gyakorlati képzését nem az iskola tartja, a gyakorlati képzés keretében végzett tevékenységével összefüggésben teljesítményét, magatartását és szorgalmát a gyakorlati képzés szervezője értékeli a (2) bekezdésében foglaltak szerint. A tanuló félévi és év végi osztályzatát - a gyakorlati képzés szervezőjének értékelése alapján - a nevelőtestület állapítja meg, és dönt a tanuló magasabb évfolyamba lépéséről, szakmai vizsgára bocsátásáról. Ha az iskola modulzáró vizsgát szervez, a tanuló félévi és év végi osztályzatát a gyakorlati képzés szervezőjének értékelése és a modulzáró vizsga eredménye alapján kell megállapítani. Az (1) és (4) bekezdésben foglaltakat a nem iskolai gyakorlati képzésben részt vevő tanuló tekintetében is alkalmazni kell.
+
+(7) Az első évfolyamra felvett tanulót, ha egyéni adottsága, fejlettsége szükségessé teszi - jogszabályban meghatározott munkamegosztás szerint, a szakértői és rehabilitációs bizottság vagy a nevelési tanácsadó szakértői véleménye alapján - az igazgató mentesíti az értékelés és minősítés alól, vagy részére az egyéni adottságához, fejlettségéhez igazodó továbbhaladást (a továbbiakban: egyéni továbbhaladás) engedélyez.
+
+(8) Ha a tanulót mentesítették az értékelés és minősítés alól, az első évfolyamot a többi tanulóval azonos osztályban előkészítő évfolyamként végzi és fejezi be. Az előkészítő évfolyam során a tanuló játékos felkészítés keretében készül az iskolai követelmények teljesítésére. Az előkészítő évfolyam megszervezhető a délelőtti napközis foglalkozások keretében is. Előkészítő évfolyamra a tanuló csak egy tanéven keresztül járhat, és csak abban az esetben, ha tanulmányait legkésőbb a hetedik életévében megkezdte.
+
+(9) Egyéni továbbhaladás esetén - a (7) bekezdésben meghatározott szakértői vélemény alapján - az engedélyben meg kell határozni, melyik tárgyból, melyik évfolyam utolsó tanítási napjáig kell a tanulónak utolérnie a többieket. Az egyéni továbbhaladás - valamennyi vagy egyes tantárgyakból - különböző évfolyamokig, de legkésőbb a negyedik évfolyam végéig tarthat.
+
+(10) Az előkészítő év - a (7) bekezdésben meghatározott szakértői vélemény alapján - az első félévet követő hónap utolsó tanítási napjáig átváltoztatható egyéni továbbhaladásra.
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/evismetles.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/evismetles.txt
new file mode 100644
index 00000000..f5039d48
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/evismetles.txt
@@ -0,0 +1,10 @@
+
+====== 11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről ======
+
+27. § (1) Ha a tanuló nem teljesítette az évfolyamra előírt tanulmányi követelményeket, tanulmányait - az első-harmadik évfolyam kivételével - az évfolyam megismétlésével folytathatja. Az évfolyam megismétlésével folytathatja tanulmányait az a tanuló is, akit fegyelmi büntetésként az adott iskolában eltiltottak a tanév folytatásától.
+
+(2) Ha a tanuló a következő tanév kezdetéig azért nem tett eleget a tanulmányi követelményeknek, mert az előírt vizsga letételére a nevelőtestülettől halasztást kapott, az engedélyezett határidő lejártáig tanulmányait felsőbb évfolyamon folytathatja.
+
+(3) Egyéni továbbhaladás esetén, amennyiben a tanuló a negyedik évfolyam végéig nem teljesíti a helyi tantervben meghatározott tanulmányi követelményeket, a negyedik évfolyam megismétlésével folytathatja tanulmányait.
+
+(4) Az évfolyam megismétlése - a közoktatási törvény 75. §-ának (2) bekezdésében meghatározott kivétellel - nem tagadható meg abban az iskolában, amellyel a tanuló tanulói jogviszonyban áll. Ha az iskolában nem indul olyan követelmények szerint tanuló osztály, amelyben a tanulót évfolyamismétlésre utasították, a tanuló tanulmányait az új követelmények szerinti osztályban is folytathatja. A tanuló kérésére az iskola igazgatója köteles segítséget nyújtani ahhoz, hogy a tanuló a megkezdett tanulmányait másik iskolában folytathassa. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/fejlesztes.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/fejlesztes.txt
new file mode 100644
index 00000000..901f0d64
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/fejlesztes.txt
@@ -0,0 +1,119 @@
+Forrás: [[http://fejlesztok.hu/segedletek/fejlesztesi-terv/330-egyeni-fejlesztesi-terv-keszitesehez-szukseges-adatok.html]]
+
+====== Egyéni fejlesztési terv ======
+
+===== 1. A sajátos nevelési igény meghatározása a közoktatási törvény 121. §-ában =====
+
+
+29. sajátos nevelési igényű gyermek, tanuló: az a gyermek, tanuló, aki a szakértői és rehabilitációs bizottság szakvéleménye alapján
+a) testi, érzékszervi, értelmi, beszédfogyatékos, autista, több fogyatékosság együttes előfordulása esetén halmozottan fogyatékos,
+b) pszichés fejlődés zavarai miatt a nevelési, tanulási folyamatban tartósan és súlyosan akadályozott (pl. dyslexia, dysgraphia, dyscalculia, mutizmus, kóros hyperkinetikus vagy kóros aktivitászavar).
+Nagyon sok esetben az óvodai élet folyamán nem lehet észlelni a problémát, csak később az iskolában derül fény arra, hogy a gyermek nem tudja tartani a tempót a számolás vagy az olvasás, írás elsajátításakor. A szakértői vizsgálat alkalmával részképességzavar, vagyis a pszichés fejlődés zavara diagnosztizálható (pl. diszlexia, diszgráfia, diszkalkulia). A gyermek hátrányai gyakran behozhatatlanná válnak, nem tud teljesíteni értelmi képességeinek megfelelően, pedig ép intellektusú tanuló, mégis SNI.
+Ahhoz, hogy a gyógypedagógus ki tudja dolgozni a tanuló egyéni fejlesztési tervét, ismernie kell a BNO-kódokat, amelyekből egyértelműen kiderül, hogy milyen terápiát kell alkalmaznia (a betegségek és az egészséggel kapcsolatos problémák nemzetközi statisztikai osztályozása).
+
+
+===== 2. A pszichés fejlődés zavara =====
+
+Általános és specifikus tanulási zavarok (részképesség zavarok)
+Olvasás-, írászavarok BNO: F.81.0; F.81.1
+(felszíni, fonológiai, kevert diszlexia)
+Aritmetikai készségek zavara BNO: F.81.2
+(grafikus, olvasási, emlékezeti, gondolkodási diszkalkulia)
+Az iskolai készségek kevert zavara BNO: F.81.3
+(aritmetikai, olvasási, íráskészségzavar együttes előfordulása)
+Nem meghatározott zavar BNO: F.81.9
+(tanulási ismeretek elsajátítási nehézsége)
+Kevert specifikus fejlődési zavarok BNO: F.83
+(a beszéd, a nyelv, az iskolai készségek és a motoros funkciók kombinált fejlődési zavara)
+Beszédészlelési és beszédmegértési folyamat elmaradása BNO: F.80.9
+Motoros diszfázia BNO: F.80.1
+Az aktivitásszabályozás és a figyelem zavarai
+szociális készségek éretlensége, zavart viselkedés,
+impulzivitás: BNO: F.90.0, F.90.1
+
+===== 3. Hogyan álljunk neki az egyéni fejlesztési terv készítésének? =====
+
+1. Állapítsuk meg, mi okoz nehézséget a gyereknek. Például egy második nyelv, matematika, tudományos szakszavak, stb.
+2. Derítsük ki, miért vannak ilyen nehézségei. Például auditív rövid távú memória vagy fonológiai feldolgozás terén.
+3. Próbáljuk megállapítani, hogyan tanul. Például jobb-e a vizuális befogadásban vagy inkább auditív típus.
+4. Állapítsuk meg, milyen tanítási módszer segíti jobban a tanulásban.
+5. Mindig kérdezzük meg magunktól, miért úgy közelítettük meg a dolgot, és van-e jobb út.
+6. Állapítsuk meg hogy a terv főbb részeit "Ki fogja elvégezni? Milyen gyakran? Hol?"
+7. Állítsunk a gyermekek elé ösztönző célokat. Minden foglalkozás a gyerek korától és képességeitől függjön.
+8. Folyamatosan ismételjünk, és állapítsuk meg, miért nem sikerült elérni a kitűzött célt, vagy ha sikerült, akkor a gyermek képességeit megfelelően igénybe vette-e.
+9. Gondoljuk végig, hogy vannak-e megvalósítható alternatívák, más lehetőségek, amelyeket jelenleg nem alkalmazunk.
+10. Ne felejtsük el, hogy a gyerek csak úgy tudja kihozni magából a legtöbbet, ha az egész iskola együttműködik. Gondoskodjunk róla, hogy minden tanárt tájékoztassunk a nehézségekről, és arról, hogyan tudnak a helyzeten a legjobban segíteni.
+
+===== 4. Egy lehetséges alternatíva az egyéni fejlesztési terv formai megvalósítására =====
+
+
+A GYERMEK ADATAI:
+Név:
+Szül.hely, idő:
+Anyja:
+Gondviselő:
+Lakcím:
+A szakvéleményt kiadta:
+A szakvélemény kelte, kontroll:
+
+
+A szakértői bizottság / szakvélemény megállapításai:
+
+
+
+
+
+
+Egyéni fejlesztési terv
+Fejlesztendő terület A fejlesztés időtartama
+1. hónap 2. hónap 3. hónap
+Testséma
+Térbeli-, időbeli tájékozódás
+Síkbeli tájékozódás, irányok
+Finommotorika, vizuomotoros koordináció
+Vizuális figyelem
+Vizuális észlelés
+Vizuális emlékezet
+Vizuális differenciálás
+Auditív figyelem
+Auditív észlelés
+Auditív emlékezet
+Auditív differenciálás
+Szerialitás
+Ritmus, beszédritmus
+Alak-háttér differenciálás
+Lényegkiemelés, összefüggések, következtetések
+Beszédértés, szövegértés
+Szókincs, verbális kifejezőkészség
+Betűdifferenciálás
+Betűfelismerés, összeolvasás
+Helyesírás, nyelvi fejlesztés
+Számfogalom, matematikai készségek fejlesztése
+
+
+===== 5. 2007. szeptemberi kiegészítés =====
+
+
+Lényeges tudni, hogy az érintett gyermekek, tanulók helyzete jelenleg nem változott. Minden olyan kedvezményre jogosultak, mint ez idáig. Utánuk a sajátos nevelési igényű gyermekek után járó normatívát lehet igényelni.
+A közoktatásról szóló 1993. évi LXXIX törvény (Kt.) 30.§-a a különleges gondozáshoz, a rehabilitációs célú foglalkoztatáshoz való jogot két csoportra terjeszti ki: a beilleszkedési, magatartási, tanulási nehézséggel küzdő és a sajátos nevelési igényű gyermekekre, tanulókra.
+
+A 2006. évi CXXI. törvénynek a Kt. módosítására vonatkozó rendelkezései - többek között - a pszichés fejlődés zavarai miatt a nevelési, tanulási folyamatban tartósan és súlyosan akadályozott tanulók ellátásában való szakmai együtt- és közreműködési kötelezettségét helyezi át 2008.augusztus 1-jétől a nevelési tanácsadók hatáskörébe.
+
+A szakértői és rehabilitációs bizottságok helyett a - gyógypedagógusokkal, pszichológusokkal, és egyéb szakemberekkel rendelkező, feladatát kisebb körzetben ellátó - nevelési tanácsadók veszik át a rehabilitációs, fejlesztő munka szakmai segítését és koordinálását. Cél a mainál elérhetőbb, hatékonyabb együttműködést, a nevelési, oktatási intézményben nyújtott szolgáltatást biztosító rendszer kialakítása.
+
+A rendszer átalakítására azonban kellő - a még szükséges szakmai és jogszabályi feltételek kialakításához, és az azok alkalmazására történő felkészüléshez megfelelő - időt ad a 2006. évi CXXI törvény. melynek 7. § (4) bekezdése - a 28. § (7) bekezdésben meghatározott, 2008. január 1-jei hatálybaléptetéssel - a Kt. 126. §-ának szövegét az alábbiak szerint állapítja meg:
+
+
+"126. § Ha a pszichés fejlődés zavarai miatt a nevelési, tanulási folyamatban tartósan és súlyosan akadályozott (pl. dyslexia, dysgraphia, dyscalculia, mutizmus, kóros hyperkinetikus vagy kóros aktivitászavar) tanulót 2008. január 1. előtt a szakértői és rehabilitációs bizottság szakvéleménye alapján az igazgató mentesítette egyes tantárgyakból, tantárgyrészekből az értékelés és a minősítés alól, a mentesítést a 2008/2009-2009/2010. tanévekben a tanulmányok során, továbbá az iskolaváltásnál a felvételi eljárásban, valamint az érettségi vizsgán, és a szakmai vizsgán figyelembe kell venni. A szakértői és rehabilitációs bizottság a 2008. január 1. előtt kezdeményezett eljárást, ha a gyermek, tanuló szakértői vizsgálata már befejeződött, 2008. március 31-ig befejezi.
+A szakértői és rehabilitációs bizottság a sajátos nevelési igény megállapítása nélkül arról hoz szakértői véleményt, hogy a gyermek, tanuló pszichés fejlődés zavarai miatt a nevelési, tanulási folyamatban tartósan és súlyosan akadályozott. Ha a gyermek, tanuló szakértői vizsgálata nem fejeződött be, az iratokat - a szülő értesítése mellett - 2008. január 31-éig megküldi a gyermek, tanuló lakóhelye, ennek hiányában tartózkodási helye szerint illetékes nevelési tanácsadónak az eljárás lefolytatása céljából. A szakértői és rehabilitációs bizottság azoknak a gyermekeknek, tanulóknak az iratait, akik tekintetében az eljárást befejezte és szakvéleményt készített - a szülő és a nevelési-oktatási intézmény értesítése mellett - 2008. július 31-ig megküldi a gyermek, tanuló lakóhelye, ennek hiányában tartózkodási helye szerint illetékes nevelési tanácsadónak. A nevelési tanácsadók ettől az időponttól kezdődően ellátják az e gyermekekkel, tanulókkal összefüggő feladatokat."
+
+A Kt. módosítása tehát jelenleg illetve a közeljövőben nem tesz szükségessé semmilyen intézkedést sem az intézményfenntartók, sem az intézmények számára. A nevelő, oktató munka szervezése - beleértve a Kt. 52. § (6) bekezdése alapján biztosítandó rehabilitációs célú tanórai foglalkozásokat - az eddigieknek megfelelően történik, s a normatív állami támogatásra is a szakértői és rehabilitációs bizottságok által kiadott szakvéleményekhez kötött gyógypedagógiai ellátásra vonatkozó finanszírozás szerint kerül sor.
+Stenger Szilvia
+logopédus
+
+----
+
+===== Közoktatási törvény - A különleges gondozáshoz, a rehabilitációs célú foglalkoztatáshoz való jog, a gyógypedagógiai nevelési-oktatási intézmény =====
+
+30. § (9) A sajátos nevelési igényű tanulót, illetve a beilleszkedési, tanulási, magatartási nehézséggel küzdő tanulót - jogszabályban meghatározott munkamegosztás szerint - a szakértői és rehabilitációs bizottság vagy a nevelési tanácsadó szakértői véleménye alapján - a gyakorlati képzés kivételével - az igazgató mentesíti egyes tantárgyakból, tantárgyrészekből az értékelés és a minősítés alól. Ha a tanulót egyes tantárgyakból, tantárgyrészekből mentesítik az értékelés és minősítés alól, az iskola - az e törvény 52. §-ának (7) bekezdésében, valamint (11) bekezdésének c) pontjában meghatározott időkeret terhére - egyéni foglalkozást szervez részére. Az egyéni foglalkozás keretében - egyéni fejlesztési terv alapján - segíti a tanuló felzárkóztatását a többiekhez. Az érettségi vizsgán az érintett tantárgyak helyett a tanuló - a vizsgaszabályzatban meghatározottak szerint - másik tantárgyat választhat. A tanuló részére a felvételi vizsgán, az osztályozó vizsgán, a modulzáró vizsgán, a szintvizsgán, a különbözeti vizsgán, a javítóvizsgán, az érettségi vizsgán, a szakmai vizsgán biztosítani kell a hosszabb felkészülési időt, az írásbeli beszámolón lehetővé kell tenni az iskolai tanulmányok során alkalmazott segédeszköz (írógép, számítógép stb.) alkalmazását, szükség esetén az írásbeli beszámoló szóbeli beszámolóval vagy a szóbeli beszámoló írásbeli beszámolóval történő felváltását.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/hianyzas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/hianyzas.txt
new file mode 100644
index 00000000..34ef8e06
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/hianyzas.txt
@@ -0,0 +1,126 @@
+====== 11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről ======
+
+[[http://www.complex.hu/jr/gen/hjegy_doc.cgi?docid=99400011.MKM]]
+
+----
+
+4/A. § (1) A nevelési-oktatási intézmény házirendjében - a közoktatási törvény 40. § (9) bekezdése szerint - kell szabályozni egyéb jogszabályban meghatározottakon túlmenően
+
+a) a gyermek, tanuló távolmaradásának, mulasztásának, késésének igazolására vonatkozó rendelkezéseket,
+
+
+----
+
+20. § (1) A beteg gyermek, tanuló az orvos által meghatározott időszakban nem látogathatja a nevelési-oktatási intézményt. Ha a pedagógus megítélése szerint a gyermek, a tanuló beteg, gondoskodik a többi gyermektől, tanulótól való elkülönítéséről, és a lehető legrövidebb időn belül értesíti a gyermek, a tanuló szüleit. Azt, hogy a gyermek, a tanuló egészséges, orvosnak kell igazolnia. Ha a kollégiumban lakó tanuló hazautaztatása nem oldható meg, az egészséges tanulóktól el kell különíteni.
+
+(2) Ha a gyermek az óvodai foglalkozásról, illetve a tanuló a tanítási óráról, a kollégiumi foglalkozásról távol marad, mulasztását igazolnia kell. A mulasztást igazoltnak kell tekinteni, ha
+
+a) a szülő előzetesen bejelentette az óvónőnek, hogy gyermekét nem viszi el az óvodába,
+
+b) a tanuló - kiskorú tanuló esetén a szülő írásbeli kérelmére - a házirendben meghatározottak szerint engedélyt kapott a távolmaradásra,
+
+c) a gyermek, a tanuló beteg volt, és azt a házirendben meghatározottak szerint igazolja,
+
+d) a gyermek, a tanuló hatósági intézkedés vagy egyéb alapos indok miatt nem tudott kötelezettségének eleget tenni.
+
+(3) Ha a távolmaradást nem igazolják, a mulasztás igazolatlan. Az iskola köteles a szülőt és a tanuló kollégiumi elhelyezése esetén - amennyiben a kollégium nem az iskolával közös igazgatású intézmény - a kollégiumot is értesíteni a tanköteles tanuló első alkalommal történt igazolatlan mulasztásakor, illetve ha a nem tanköteles, kiskorú tanuló igazolatlan mulasztása a tíz órát eléri. Az értesítésben fel kell hívni a szülő figyelmét az igazolatlan mulasztás következményeire. Ha az iskola értesítése eredménytelen maradt, és a tanuló ismételten igazolatlanul mulaszt, az iskola a gyermekjóléti szolgálat közreműködését igénybe véve megkeresi a tanuló szülőjét.
+
+(4) Ha a gyermek a közoktatási törvény 24. § (3) bekezdése alapján vesz részt óvodai nevelésben, és egy nevelési évben hét napnál többet mulaszt, illetve ha a tanköteles tanuló igazolatlan mulasztása egy tanítási évben eléri a tíz órát, az óvoda vezetője, az iskola igazgatója - a gyermekvédelmi és gyámügyi feladat- és hatáskörök ellátásáról, valamint a gyámhatóság szervezetéről és illetékességéről szóló 331/2006. (XII. 23.) Korm. rendeletben foglaltakkal összhangban - értesíti a gyermek tényleges tartózkodási helye szerint illetékes jegyzőt és a gyermekjóléti szolgálatot. Az értesítést követően a gyermekjóléti szolgálat az óvoda, illetve az iskola és szükség esetén a kollégium bevonásával haladéktalanul intézkedési tervet készít, melyben a mulasztás okának feltárására figyelemmel meghatározza a tanulót veszélyeztető és az igazolatlan hiányzást kiváltó helyzet megszüntetésével, a tanulói tankötelezettség teljesítésével kapcsolatos, továbbá a gyermek, tanuló érdekeit szolgáló feladatokat.
+
+(5) Ha a tanköteles tanuló igazolatlan mulasztása egy tanítási évben eléri a harminc órát, az iskola ismételten tájékoztatja a gyermekjóléti szolgálatot, amely közreműködik a tanuló szülőjének az értesítésében. Ha a tanköteles tanuló igazolatlan mulasztása egy tanítási évben eléri az ötven órát, az iskola igazgatója értesíti a gyermek tényleges tartózkodási helye szerint illetékes jegyzőt.
+
+(6) Ha a tanulónak egy tanítási évben az igazolt és igazolatlan mulasztása együttesen
+
+a) a közoktatási törvény 8. §-a (1) bekezdésének c) pontjában meghatározott iskolai nevelés-oktatás általános műveltséget megalapozó szakaszában a kettőszázötven tanítási órát,
+
+b) a közoktatási törvény 8. §-a (1) bekezdésének d) pontjában meghatározott iskolai nevelés-oktatás szakképesítés megszerzésére felkészítő szakaszában az elméleti tanítási órák húsz százalékát,
+
+c) alapfokú művészetoktatási intézményben a tanítási órák egyharmadát,
+
+d) egy adott tantárgyból a tanítási órák harminc százalékát meghaladja
+
+és emiatt a tanuló teljesítménye tanítási év közben nem volt érdemjeggyel értékelhető, a tanítási év végén nem osztályozható, kivéve, ha a nevelőtestület engedélyezi, hogy osztályozóvizsgát tegyen. A nevelőtestület az osztályozóvizsga letételét akkor tagadhatja meg, ha az igazolatlan mulasztások száma meghaladja az igazolt mulasztások számát, és az iskola eleget tett a (3) bekezdésben meghatározott értesítési kötelezettségének. Ha a tanuló a tanítási év végén nem osztályozható, tanulmányait évfolyamismétléssel folytathatja. Ha a tanuló mulasztásainak száma már az első félév végére meghaladja a meghatározott mértéket, és emiatt teljesítménye nem volt érdemjeggyel értékelhető, félévkor osztályozóvizsgát kell tennie.
+
+(7) A gyakorlati képzésről és a beszámoltató rendszerű oktatásról való hiányzás következményeit a szakképzésre vonatkozó jogszabályok határozzák meg.
+
+(8) Ha a tanuló a tanórai foglalkozás kezdetére nem érkezik meg, késik, amit igazolnia kell. A késések ideje - a házirendben foglaltak szerint - összeadható. Amennyiben ez az idő eléri a tanórai foglalkozás idejét, a késés egy igazolt vagy igazolatlan órának minősül. Az elkéső tanuló nem zárható ki a tanóráról.
+
+----
+
+28. § (2) Megszűnik a tanulói jogviszonya - a tanköteles kivételével - annak, aki igazolatlanul harminc tanítási óránál többet mulaszt, feltéve, hogy az iskola a tanulót, kiskorú tanuló esetén a szülőt legalább kettő alkalommal, írásban figyelmeztette az igazolatlan mulasztás következményeire. A tanulói jogviszony megszűnéséről az iskola írásban értesíti a tanulót, kiskorú tanuló esetén a szülőt, továbbá minden esetben a tanuló állandó lakóhelye, ennek hiányában tartózkodási helye szerint illetékes regionális egészségbiztosítási pénztárat.
+
+===== Szakképzés =====
+
+==== 1993. évi LXXVI. törvény a szakképzésről ====
+
+19/A. § (1) Azoknál a szakképesítéseknél, amelyekben a 7. § (1) bekezdése szerint a gazdasági kamara által kidolgozott szakmai és vizsgakövetelményt a szakképesítésért felelős miniszter jogszabályban kiadta, a területi gazdasági kamara a gazdasági érdekképviseleti szervezetekkel, szakmai szervezetekkel az iskolai tanműhelyben folyó gyakorlati képzés törvényességi ellenőrzése keretében vizsgálhatja az alkalmazási feltételekre, a maximális csoportlétszámra, a tanulói terhelésre, a tanulói kedvezmények és juttatások biztosítására, a tanulói munka- és balesetvédelemre, a hátrányos megkülönböztetés tilalmára vonatkozó rendelkezésekben, valamint a 10. § (1) bekezdése szerinti eszköz- és felszerelési jegyzékben foglaltak megtartását. Az iskolai tanműhely ellenőrzését a közoktatási törvény 107. §-ában meghatározott eljárási rend szerint kell végezni, az ellenőrzésben kizárólag az Országos közoktatási szakértői névjegyzékben szereplő szakértők működhetnek közre.
+
+(2) A 19. §-ban foglaltak esetén a vállalkozásnál folyó gyakorlati képzés felügyeletét és a képzésre vonatkozó rendelkezések megtartásának ellenőrzését az illetékes területi gazdasági kamara - a feltételek biztosítása mellett - a szakképző iskola közreműködésével látja el.
+
+(3) Ha a szakképesítés nem tartozik egyik gazdasági kamara hatáskörébe sem, a gyakorlati képzés felügyeletéről a szakképző iskola gondoskodik.
+
+20. § A gyakorlati képzést szervező - eltérő megállapodás hiányában - köteles a gyakorlati képzés követelményeire való felkészítéshez, továbbá a gyakorlati vizsgához szükséges tárgyi eszközöket és a személyi feltételeket biztosítani.
+
+22. § (1) Fiatalkorú tanuló esetében a képzési idő a napi hét órát, nagykorú tanuló esetében pedig a napi nyolc órát nem haladhatja meg.
+23. § (1) A gazdálkodó szervezetnél a tanuló gyakorlati képzésére nem kerülhet sor
+
+a) az elméleti képzési napokon;
+
+b) a szakképző iskola által szervezett olyan rendezvény napján, amelyen minden tanuló részvétele kötelező;
+
+c) a képzési idő alatti modulzáró vizsga és a tanulmányokat befejező szakmai vizsga napjain; továbbá
+
+d) minden olyan esetben, amikor a munkajogi szabályok szerint a munkavállaló mentesül a munkavégzési kötelezettség alól.
+
+(2) A gazdálkodó szervezet heti pihenőnapokon, illetőleg munkaszüneti napokon a tanulót gyakorlati képzésre csak a rendeltetése folytán e napon is működő gyakorlati képzési helyen és a szakképző iskola hozzájárulásával veheti igénybe. Az igénybe vett idő helyett a hét más gyakorlati képzési napján kell ugyanolyan mértékben szabadidőt biztosítani.
+
+24. § (1) A gyakorlati képzés foglalkozásain való részvétel kötelező.
+(2) A tanuló részvételét, illetőleg mulasztását a gazdálkodó szervezet is nyilvántartja és azt a tanuló foglalkozási naplójába bejegyzi. A tanuló köteles mulasztását igazolni.
+
+(3) Ha a tanulónak a gyakorlati képzésről való igazolt és igazolatlan mulasztása egy tanévben meghaladja a gyakorlati képzési idő (óraszám) húsz százalékát, a tanuló tanulmányait csak az évfolyam megismétlésével folytathatja. Ha a gyakorlati képzést tanulószerződés keretében gazdálkodó szervezet végzi, az évfolyam megismétléséhez a gazdálkodó szervezet hozzájárulása is szükséges.
+
+(4) Ha a tanuló mulasztása a (3) bekezdésben meghatározott mértéket eléri, de igazolatlan mulasztása nincs és szorgalma, elért teljesítménye alapján úgy ítélhető meg, hogy mulasztását a következő tanév megkezdéséig pótolja, illetőleg az előírt gyakorlati követelményeket teljesíteni tudja, az évfolyam megismétlésétől el lehet tekinteni. Az ügyben a szakképző iskola nevelőtestülete dönt, a gazdálkodó szervezetnél folyó gyakorlati képzés esetén a gazdálkodó szervezet javaslatára.
+25. § (1) A gazdálkodó szervezet a tanuló gyakorlati képzéséről köteles foglalkozási naplót vezetni.
+
+(2) A foglalkozási naplónak tartalmaznia kell a szakmai tevékenységeket, az ezekre fordított időt és a tanuló értékelését.
+
+(3) A foglalkozási naplót a szakképző iskola felkérése alapján betekintésre rendelkezésre kell bocsátani.
+
+26. § Ha a napi gyakorlati képzési idő a négy és fél órát meghaladja, a tanuló részére legalább 30 perc, megszakítás nélküli szünetet a képzési időn belül biztosítani kell.
+
+
+[[http://net.jogtar.hu/jr/gen/hjegy_doc.cgi?docid=99300076.TV]]
+
+
+===== Oktatási jogok biztosa - állásfoglalások =====
+
+[[http://www.oktbiztos.hu/ugyek/jelentes2001/tart.html]]
+[[http://www.oktbiztos.hu/ugyek/jelentes2009/ertekeles.html]]
+[[http://www.oktbiztos.hu/ugyek/jelentes2001/mulasztas.html]]
+
+==== Tanórán kívüli foglalkozáson nincs hiányzás csak, ha a PePo része ====
+
+Egy iskola szülői közösségének képviselője kifogásolta, hogy az iskolai normákban a tanórán kívüli foglalkozásokról való mulasztás megítélése a tanórákéval azonos, tehát igazolatlan hiányzást vonhat maga után. A jogszabályok a mulasztások kapcsán a tanóráról való távolmaradáshoz kapcsolják az igazolási kötelezettséget, illetve a jogkövetkezményeket. A tanórán kívüli foglalkozásokhoz a jogszabályok ilyen jogkövetkezményt nem fűznek. A fentiek alapján megállapítottuk, hogy a kifogásolt iskolai rendelkezés az oktatási jogok sérelmének veszélyét okozza, ezért kezdeményeztük, hogy az iskola igazgatója tegye meg a szükséges intézkedéseket a szabály módosítására. Kezdeményezésünket az intézményvezető elfogadta. (K-OJOG-231/2001.)
+
+Tájékoztattuk, hogy a közoktatásról szóló 1993. évi LXXIX. törvény 48. § (1) bekezdés b) pontja alapján az iskola pedagógiai programjának részeként megalkotott helyi tantervben kell meghatározni az iskola egyes évfolyamain tanított tantárgyakat, a kötelező és választható tanórai foglalkozásokat, valamint azok óraszámait, az előírt tananyagot és követelményeit. A közoktatási törvény 12. § (1) bekezdés a) pontjában foglaltak alapján a tanuló köteles a kötelező és a választott foglalkozásokon és szakmai gyakorlatokon részt venni. Tehát amennyiben az adott rendezvényt a pedagógiai program tartalmazza, abban az esetben az kötelező. Ezen rendelkezések alapján tehát a kötelező foglalkozásokról való távolmaradást lehet mulasztásként regisztrálni, de ahhoz kizárólag a jogszabályban meghatározott jogkövetkezmények fűzhetőek.
+
+==== Késés fegyelmit von maga után, de nem számítható át hiányzássá ====
+
+Egy szülő vizsgálatunkat kérte többek között azzal kapcsolatban, hogy gyermekével szemben fegyelmi eljárás indult az iskolában a tanuló húsznál több igazolatlan hiányzása miatt. A szülő sérelmezte, hogy több alkalommal a tanuló óráról való késését is mulasztásnak tekintették. Ezzel szemben az intézmény vezetője arról tájékoztatta hivatalunkat, hogy az iskola szervezeti és működési szabályzata szerint az igazolatlan késések nem válthatók át igazolatlan órára, de a sorozatos késések fegyelmi intézkedést vonnak maguk után. A rendelkezésünkre bocsátott dokumentumok alapján megállapítottuk, hogy az intézmény szervezeti és működési szabályzata megfelelően rendelkezik a késések szankcionálásáról. Megállapítottuk továbbá, hogy a szabályzatnak megfelelően a késéseket az iskola nem számította be az igazolatlan mulasztások közé, így az ügyet jogsértés hiányában lezártuk. (K-OJOG-319/2002.)
+
+==== Iskolaváltás esetén a hiányzásokat folytatólagosan kell számozni ====
+
+Egyik beadványozó aziránt érdeklődött, hogy amennyiben egy tanuló iskolát vált, hogyan kell alkalmazni a mulasztás szabályait, folytatni kell az igazolatlan órák számolását vagy újra kell kezdeni. Tájékoztattuk, hogy a mulasztás számítására vonatkozó szabályok mindig nevelési, tanítási évre vonatkoznak, ennek megfelelően az igazolatlan órák számát folytatólagosan kell számolni. Ezért ha a tanuló intézményt vált a két intézménynek együtt kell működnie, és meg kell osztaniuk egymással a mulasztással kapcsolatos információkat. (K-OJOGB-324/2007.)
+
+==== A felszereléshiány nem igazolatlan óra ====
+
+Nem alkalmazhatóak az igazolatlan mulasztás jogkövetkezményei abban az esetben, ha a tanuló a testnevelés felszerelését hagyja otthon, és emiatt nem tud részt venni a testnevelés órán, valamint akkor sem, ha nem ünneplő ruhában jelenik meg az iskolai ünnepségen. (K-OJOGB-766/2007., K-OJOGB-623/2007.)
+
+==== Az orvosi igazolás nem kérdőjelezhető meg ====
+
+Egyes esetekben az óvodai foglalkozásról, a tanóráról, illetve a kollégiumi foglalkozásról történő távolmaradást a jogszabály erejénél fogva igazoltnak kell tekinteni. Ilyen eset, ha a gyermek, tanuló beteg, és azt a házirendben meghatározottak szerint igazolja. Az intézmény szabályozási jogköre ebben az esetben az orvosi igazolás benyújtásának eljárási rendelkezésein nem terjed túl. A rendelet 20. §-a szerint ugyanis a beteg gyermek, tanuló az orvos által meghatározott időben nem látogathatja az intézményt. A jogszabály nem ad arra lehetőséget, hogy a nevelési-oktatási intézmény az orvosi igazolásban foglaltakat megkérdőjelezze, vagy egy orvosi igazolást ne fogadjon el.
+
+==== Alapos ok, mely esetén a hiányzást igazoltnak kell tekinteni ====
+
+A mulasztást akkor is igazoltnak kell tekinteni, ha a tanuló hatósági intézkedés, vagy egyéb alapos ok miatt nem tud kötelezettségének eleget tenni.
+Álláspontunk szerint alapos oknak kell tekinteni a különleges időjárásból, vagy egyéb előre nem látható eseményből adódó közlekedési akadályokat, továbbá azt az esetet is, amikor a tanuló középiskolai felvételi vizsgán vesz részt.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/iskolavaltas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/iskolavaltas.txt
new file mode 100644
index 00000000..96c8961a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/iskolavaltas.txt
@@ -0,0 +1,124 @@
+
+====== Tanuló iskolaváltása ======
+
+Az iskolaváltással kapcsolatban másként kezelendő a jegy/osztályzat és másként a hiányzás;
+illetve el kell választanunk a tartalmi kérdéseket a technikai megvalósítás lehetőségeitől.
+
+És persze a helyzet a tanév előrehaladtával fokozódik: más szeptember 2-án és más március 20-án átvenni egy diákot.
+
+===== Egy tanuló iskolaváltásának lehetséges okai =====
+
+Egy tanuló iskolaváltásának lehetnek objektív és szubjektív okai.
+
+==== Objektív okok ====
+
+Az objektív ok klasszikus esete a költözés. Bár gyakorlatunkban arra is volt példa, hogy egy súlyosan beteg diák a
+gyógykezelése miatt jött iskolánkba (közel vannak hozzánk a SOTE klinikái).
+
+Úgy gondolom, hogy ebben az esetben a - kétségtelenül hiányos - szabályokat rugalmasan, a diák javára kell alkalmazni.
+
+==== Szubjektív okok ====
+
+A tanuló (szülő) egyszerűen élni kíván - tanév közben - a szabad iskolaválasztás jogával, mert például csalódott
+(okkal vagy ok nélkül) az aktuális iskolában.
+
+Véleményem szerint ezen esetben a potenciális befogadó iskola mindenféle értelemben szabadon járhat el, de ha az
+átvétel mellett dönt, annak jogkövetkezményeit is vállalnia kell (hiányzások „göngyölített” nyilvántartása,
+különbözeti vizsgák megtartása, stb.). És erről a diákot/szülőt tájékoztatnia kell!
+
+===== Az átvételhez kapcsolódó jogszabályok =====
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **42. § (1)** //Az iskola - jogszabályban meghatározottak szerint - állapíthatja meg a tanulói jogviszony létesítésének tanulmányi feltételeit (a továbbiakban: felvételi követelmények). Az iskola a felvételi követelményeket a tanév rendjéről szóló rendelet által meghatározott időben a felvételi tájékoztatóban köteles nyilvánosságra hozni.// \\
+>> **46. § (1)** //Az iskola helyi tantervének - a szakképzés kivételével - biztosítania kell az iskolaváltást, a tanuló átvételét, szükség esetén különbözeti vizsgával vagy évfolyamismétléssel.// \\
+>> **66. § (1)** //A tanuló (magántanuló) az iskolával tanulói jogviszonyban áll. A tanulói jogviszony felvétel vagy átvétel útján keletkezik. A felvétel és az átvétel jelentkezés alapján történik. A felvételről vagy átvételről az iskola igazgatója dönt a 42. § (1)-(2) bekezdésében és a 46-47. §-ban meghatározottak alapján. //
+>> **(10)** //Az iskolába felvett tanulók osztályba vagy csoportba való beosztásáról - a szakmai munkaközösség, annak hiányában a nevelőtestület véleményének kikérésével - az igazgató dönt.// \\
+>> **83. § (1)** //A nevelési-oktatási intézmény a gyermekkel, a tanulóval kapcsolatos döntéseit - jogszabályban meghatározott esetben és formában - írásban közli a tanulóval, illetve a szülővel.// \\
+
+>> (11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről) **17. § (3)** //A középiskolában és a szakiskolában a tanuló beiratkozásához be kell mutatni a tanuló személyi igazolványát vagy születési anyakönyvi kivonatát, és az elvégzett iskolai évfolyamokat tanúsító bizonyítványokat; továbbá a szakképző évfolyamra történő beiratkozáskor a megfelelő iskolai előképzettséget igazoló bizonyítványt, szükség esetén az egészségügyi, pályaalkalmassági szakvéleményt.// \\
+>> **18. § (1)** //A tanuló átvételére … a tanítási év során bármikor lehetőség van. Az átvételi kérelemhez a 17. § (3) bekezdésben felsorolt iratokat kell bemutatni.// \\
+>> **(3)** //Az … iskolai felvételi, átvételi kérelem elbírálásáról a tanulót, kiskorú tanuló esetén a szülőt is, tanköteles esetén továbbá … az előző iskola igazgatóját; … is értesíteni kell. …// \\
+
+
+==== Az iskolák által alkalmazott záradékok ====
+
+>> (4. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez) \\
+>> //1. Felvéve [átvéve, a(z) ......... számú határozattal áthelyezve] a(z) (iskola címe) .................. iskolába. (Bn., N., TI., B.; azaz Beírási napló, Osztálynapló, Törzslap, Bizonyítvány)// \\
+>> //35. Az iskola a … vagy egyéb, a záradékok között nem szereplő, a tanulóval kapcsolatos közlés dokumentálásához a záradékokat megfelelően alkalmazhatja, illetve megfelelően záradékot alakíthat ki.//
+
+==== Konklúzió ====
+
+Az iskolákban kell(ene) egy írásban lefektetett (nyilvános) **protokoll** az átvétel eljárásrendjéről (vö: 1993. évi LXXIX. törvény, 46. § (1) bekezdés).
+Továbbá az átvételről igazgató által hozott **határozat** születik(?) (vö: 11/1994. MKM rendelet 18. § (3) bekezdés, ill. 4. számú melléklet), ami
+tartalmazhatja a jegyek,osztályzatok, hiányzások kezelésével kapcsolatos **döntést** is. (Például az ofők, szaktanárok, napló-adminisztrátorok eligazítása
+céljából is…) Azaz: a probléma kezelése nem tolható át a napló-adminisztrátorokra, írásbeli vezetői döntés kell(ene)! Mindez a naplóban (is) záradékolandó!
+
+===== Az érdemjegyek, osztályzatok kezelésére vonatkozó kapcsolódó jogszabályok =====
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **45. § (2)** //Az iskola pedagógiai programot, annak részeként … helyi tantervet készít, vagy az ilyen módon készített helyi tantervek közül választ, és azt építi be helyi tantervként a pedagógiai programjába. …// \\
+>> **48. § (1)** //Az iskola pedagógiai programja meghatározza:// \\
+>> //b) az iskola helyi tantervét, ennek keretén belül// \\
+>> // - az iskola egyes évfolyamain tanított tantárgyakat, a kötelező és választható tanórai foglalkozásokat, valamint azok óraszámait, az előírt tananyagot és követelményeit,// \\
+>> // - az iskola magasabb évfolyamára lépés feltételeit,// \\
+>> // - az iskolai beszámoltatás, az ismeretek számonkérésének követelményeit és formáit, a tanuló magatartása, szorgalma értékelésének és minősítésének követelményeit, …// \\
+>> **70. § (1)** //A pedagógus … a tanuló teljesítményét, előmenetelét tanítási év közben rendszeresen érdemjeggyel értékeli, félévkor és a tanítási év végén osztályzattal minősíti. A tanuló magatartásának és szorgalmának értékelését és minősítését az osztályfőnök … végzi. …// \\
+>> **(4)** //Az egyes tanulók év végi osztályzatát a nevelőtestület osztályozó értekezleten áttekinti, és a pedagógus, illetve az osztályfőnök által megállapított osztályzatok alapján dönt a tanuló magasabb évfolyamba lépéséről. …// \\
+
+>> (11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről) **21. § (3)** //A tanuló osztályzatait évközi teljesítménye és érdemjegyei vagy … a különbözeti vizsgán, … nyújtott teljesítménye alapján kell megállapítani. … Különbözeti vizsgát a tanuló abban az iskolában tehet, amelyben tanulmányait folytatni kívánja. … //
+
+==== Konklúzió ====
+
+Az érdemjegyek, osztályzatok **felettébb helyiek**: „helyi” tantárgyakból, „helyi” tananyagok, „helyi” követelmények alapján;, „helyi” pedagógusok,
+„helyi” nevelőtestületek döntése révén születnek meg. A fogadó iskola így két dolgot tehet:
+
+ - elfogadja ezeket a jegyeket, osztályzatokat (mindet, vagy néhányat),
+
+ - az el nem fogadott jegyek, osztályzatok esetében különbözeti vizsgát ír elő.
+
+Technikailag:
+
+ - az esetlegesen előírt különbözeti vizsgák tárgyait, időpontját az átvételről szóló (említett) határozatnak tartalmaznia kell(ene),
+
+ - az „elfogadott” jegyeket, osztályzatokat ezen határozat melléklete tartalmazza, hogy az „átvevő” pedagógus - mérlegelve - fel tudja őket használni (vö: 1993. évi LXXIX. törvény, 70. § (1) bekezdés).
+
+ - az e-naplóba ezek az „átvett” jegyek, osztályzatok nem kerülnek be, hanem a fenti határozat csatolható az osztályozó napló kinyomtatott változatához, vagy záradékkal hivatkozni lehet rá.
+
+===== A hiányzások kezelésére vonatkozó kapcsolódó jogszabályok =====
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **75. § (3)** //Megszűnik a tanuló tanulói jogviszonya - a tanköteles tanuló kivételével - ha az iskola kötelező foglalkozásairól a jogszabályban meghatározott időnél igazolatlanul többet mulasztott.//
+
+>> (11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről) **20. § (2)** //Ha a … tanuló a tanítási óráról, … mulasztását igazolnia kell. A mulasztást igazoltnak kell tekinteni, ha// \\
+>> // b) a tanuló … a házirendben meghatározottak szerint engedélyt kapott a távolmaradásra,// \\
+>> // c) a gyermek, a tanuló beteg volt, és azt a házirendben meghatározottak szerint igazolja,// \\
+>> // d) a tanuló hatósági intézkedés vagy egyéb alapos indok miatt nem tudott kötelezettségének eleget tenni.// \\
+>> **(3)** //Ha a távolmaradást nem igazolják, a mulasztás igazolatlan. Az iskola köteles a szülőt … értesíteni a tanköteles tanuló első alkalommal történt igazolatlan mulasztásakor, illetve ha a nem tanköteles, kiskorú tanuló igazolatlan mulasztása a tíz órát eléri. // \\
+>> **(4)** //Ha … a tanköteles tanuló igazolatlan mulasztása egy tanítási évben eléri a tíz órát, az iskola igazgatója … értesíti a gyermek tényleges tartózkodási helye szerint illetékes jegyzőt és a gyermekjóléti szolgálatot.// \\
+>> **(5)** //Ha a tanköteles tanuló igazolatlan mulasztása egy tanítási évben eléri a harminc órát, az iskola ismételten tájékoztatja a gyermekjóléti szolgálatot, amely közreműködik a tanuló szülőjének az értesítésében. Ha a tanköteles tanuló igazolatlan mulasztása egy tanítási évben eléri az ötven órát, az iskola igazgatója értesíti a gyermek tényleges tartózkodási helye szerint illetékes jegyzőt.// \\
+>> **(6)** //Ha a tanulónak egy tanítási évben az igazolt és igazolatlan mulasztása együttesen// \\
+>> // a) a … kettőszázötven tanítási órát,// \\
+>> // d) egy adott tantárgyból a tanítási órák harminc százalékát meghaladja// \\
+>> // és emiatt a tanuló teljesítménye tanítási év közben nem volt érdemjeggyel értékelhető, a tanítási év végén nem osztályozható, kivéve, ha a nevelőtestület engedélyezi, hogy osztályozóvizsgát tegyen. …// \\
+>> **28. § (2)** //Megszűnik a tanulói jogviszonya - a tanköteles kivételével - annak, aki igazolatlanul harminc tanítási óránál többet mulaszt, … //
+
+==== Konklúzió ====
+
+a hiányzásokhoz tehát súlyos jogkövetkezmények tartoznak. Ennek megfelelően a fogadó iskola nem teheti meg, hogy a „hozott” hiányzásokat
+figyelmen kívül hagyja, különös tekintettel arra, hogy a jogszabály több helyen egyértelműen „**tanítási év**” alatti hiányzásokat említ.
+Azaz: a hiányzásokat („hozott” + „szerzett”) valahogyan folyamatosan kell regisztrálni.
+
+Technikailag:
+ - a „hozott” hiányzások mértékét az átvételről szóló határozat mellékletének tartalmaznia kell(ene),
+ - az e-naplóba ezek az „átvett” hiányzások nem kerülnek be (hiszen hova?), hanem a fenti határozat csatolható az osztályozó napló kinyomtatott változatához, vagy záradékkal hivatkozni lehet rá.
+ - az „átvevő” osztályfőnöknek fokozottan kell figyelnie ezen diákok hiányzásaira. (Lsd. „jegyzői” teendők.)
+
+----
+
+//(Budapest, 2011. január 22. Bánhegyesi Zoltán - LKG)//
+
+
+
+
+
+
+
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyelvi_elokeszito.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyelvi_elokeszito.txt
new file mode 100644
index 00000000..b459c7cf
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyelvi_elokeszito.txt
@@ -0,0 +1,18 @@
+
+====== Nyelvi előkészítő ======
+
+28. § (1) A gimnáziumnak - a (2) és (4) bekezdésben meghatározott kivétellel - négy évfolyama van. A négy évfolyamos gimnáziumban a nevelés és oktatás a kilencedik évfolyamon kezdődik és a tizenkettedik évfolyamon fejeződik be.
+
+(2) Hat vagy nyolc évfolyammal működhet a gimnázium, ha a középtávú beiskolázási terv [88. § (2) bek.] előrejelzése alapján a tankötelezettség teljesítéséhez szükséges feltételek ily módon teremthetők meg, és fővárosi, megyei szinten megoldható azoknak a tanulóknak a gimnáziumi felvétele, akik gimnáziumi tanulmányaikat a kilencedik évfolyamon szeretnék megkezdeni. A nevelés és oktatás a hat évfolyamos gimnáziumban a hetedik, a nyolc évfolyamos gimnáziumban az ötödik évfolyamon kezdődik, és - a hat, illetve a nyolc évfolyamos gimnáziumban is - a tizenkettedik évfolyamon fejeződik be. A hat vagy nyolc évfolyammal működő gimnáziumban - ha jogszabály előírja - a nevelést-oktatást négy évfolyamon is meg kell szervezni, az (1) bekezdésben meghatározottak szerint.
+
+(3)
+
+(4) Ha az (1)-(2) bekezdésben meghatározott gimnáziumban a nevelő és oktató munka két tanítási nyelven (magyarul és idegen nyelven, beleértve a nemzetiségi és a kisebbségi nyelvet is) folyik (a továbbiakban: két tanítási nyelven folyó oktatás) - a Két tanítási nyelvű iskolák irányelve, illetve a Nemzeti, etnikai kisebbség iskolai oktatásának irányelvében meghatározottak szerint -, a nevelés és oktatás a tizenharmadik évfolyamon fejeződhet be. Tizenharmadik évfolyamon fejeződhet be a nevelés és oktatás a gimnáziumban akkor is, ha a kilencedik évfolyamon legalább a kötelező tanórai foglalkozások negyven százalékának megfelelő időkeretben idegen nyelvből, illetve a nemzetiségi és a kisebbségi nyelvből intenzív nyelvi felkészítés folyik, továbbá a gimnázium a tizedik-tizenharmadik évfolyamon emelt szintű oktatás keretében felkészíti a tanulót az adott nyelvből az emelt szintű érettségi vizsga letételére. A nyelvi előkészítésre fel nem használt időkeret legalább huszonöt százalékát informatikai ismeretek oktatására, a fennmaradó időkeretet pedig képességfejlesztésre kell fordítani (a továbbiakban: nyelvi előkészítő évfolyam). A hat vagy nyolc évfolyammal működő gimnáziumban a nyelvi előkészítő évfolyam a kilencedik évfolyam helyett másik évfolyamon is megszervezhető.
+
+(5) A gimnáziumban általános műveltséget megalapozó, valamint érettségi vizsgára és felsőfokú iskolai tanulmányok megkezdésére felkészítő nevelés és oktatás folyik (a továbbiakban: középiskolai nevelés és oktatás). A gimnáziumban a tizenegyedik évfolyamtól kezdődően munkába állást előkészítő, illetve segítő elméleti és gyakorlati tanítási óra is tartható.
+
+(6) A gimnáziumban a tanuló felkészül az érettségi vizsgára, valamint felsőfokú iskolai továbbtanulásra, illetve munkába állásra.
+
+(7) Az adott évfolyamban indítható osztály, osztályok számának figyelembevételével meg kell szervezni a gimnáziumban - a (4) bekezdésben meghatározott - nyelvi előkészítő évfolyamot, illetve a nyelvi előkészítő évfolyam további osztályát, ha a jelentkezők létszáma alapján ez indokolt. A nyelvi előkészítő évfolyam, illetve a nyelvi előkészítő évfolyam osztálya több középiskola tanulóiból is megszervezhető egy gimnázium keretei között.
+
+(8) A gimnázium tanulója - az átvételre és a felvételre vonatkozó rendelkezések szerint (42. §, 46. §, 66-67. §) - folytathatja tanulmányait az általános iskola, másik gimnázium, szakközépiskola, szakiskola megfelelő évfolyamán. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyomtatvanyok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyomtatvanyok.txt
new file mode 100644
index 00000000..bcb76d92
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/nyomtatvanyok.txt
@@ -0,0 +1,109 @@
+====== A nyomtatványokra vonatkozó szabályozások ======
+
+A közoktatási törvény (Kt.) 72. § (2)#(3) bekezdése az alábbi módon szabályozza a közoktatási
+intézményi nyomtatványok, illetve az azokat részben kiváltó informatikai rendszerek alkalmazási
+szabályait:
+
+72. § . (2) Az iskolában csak olyan bizonyítványnyomtatvány, illetve bizonyítvány kiállításához
+szükséges nyomtatvány alkalmazható, amelyet az oktatásért felelős miniszter, szakképesítést tanúsító
+bizonyítvány esetén a szakképzésért és felnőttképzésért felelős miniszter jóváhagyott. A bizonyítványnyomtatvány
+és a bizonyítvány kiállításának alapjául szolgáló nyomtatvány előállításához, forgalmazásához az oktatásért felelős miniszter,
+szakképesítést tanúsító bizonyítvány esetén a szakképzésért és felnőttképzésért felelős miniszter engedélye szükséges.
+Az iskolai nyomtatványok (az év végi bizonyítvány és az állami vizsga teljesítéséről kiállított bizonyítvány
+kivételével (az oktatásért felelős miniszter, szakképesítést tanúsító bizonyítvány esetén a szakképzésért
+és felnőttképzésért felelős miniszter által jóváhagyott rendszer alkalmazásával, a személyiségi,
+adatvédelmi és biztonságvédelmi követelmények megtartásával elektronikus úton is elkészíthetők és
+tárolhatók. A bizonyítvány kiállításának alapjául szolgáló nyomtatványt azonban nyomtatott formában
+is elő kell állítani, és meg kell őrizni.
+
+72. § . (3) A kiadott érettségi bizonyítványokról és a szakképesítést tanúsító bizonyítványokról (a
+vizsgaszabályzatban meghatározottak szerint) központi nyilvántartást kell vezetni.
+
+
+====== 11/1994 MKM rendelet ======
+
+=== A foglalkozási napló ===
+
+5. Az óvodai, a tanórai, a tanórán kívüli, valamint a kollégiumi foglalkozásokról a nevelő munkát végző, illetve a foglalkozást
+tartó pedagógus foglalkozási naplót (csoportnaplót, osztálynaplót, sportnaplót stb.) vezet. A foglalkozási naplót az óvodai nevelés,
+iskolai nevelés és oktatás nyelvén kell vezetni.
+
+=== A tanügyi nyilvántartások vezetése ===
+
+10. a) A pedagógus csak a nevelő-oktató munkával összefüggő feladatokhoz nélkülözhetetlen ügyviteli tevékenységet köteles elvégezni.
+
+b) Az osztályfőnök vezeti az osztálynaplót, a törzslapot, és kiállítja a bizonyítványt, vezeti a továbbtanulással összefüggő nyilvántartást.
+Alapfokú művészetoktatási intézményben a hangszert, illetve a csoportos tantárgyat oktató szaktanár - az intézményvezető megbízása alapján -
+vezeti az egyéni foglalkozási naplót, a csoportos foglalkozási naplót, a törzslapot és kiállítja a bizonyítványt.
+
+====== 11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről ======
+
+===== Az iskola által kötelezően használt nyomtatványok =====
+
+1. Alapvizsga bizonyítvány*
+
+2. Beírási napló*
+
+3. Bizonyítvány (szakmai vizsga alapján)+
+
+4. Bizonyítványkönyv*
+
+5. Diákigazolvány*
+
+6. Ellenőrző
+
+7.
+
+8. Érettségi bizonyítvány*
+
+9. Fakultatív záróvizsga-bizonyítványok**
+
+10.
+
+11. Gyógytestnevelési és könnyített testnevelési napló
+
+12.
+
+13. Javítóvizsga-jegyzőkönyv
+
+14. Jegyzőkönyv a vizsgához
+
+15.
+
+16.
+
+17. Nemzetiségi, etnikai bizonyítványkönyv*
+
+18. Nemzetiségi törzslap (volt anyakönyv)*
+
+19. Órarend
+
+20. Órarendi kimutatás
+
+21. Összesítés a vizsgát tett tanulókról
+
+22. Osztálynapló (csoportnapló)
+
+23. Osztályozóív a vizsgához
+
+24. Osztályozóvizsga-jegyzőkönyv
+
+25. Sportnapló
+
+26.
+
+27. Tantárgyfelosztás
+
+28. Törzslap külív (volt anyakönyvi külív és törzslap)*
+
+29. Törzslap külív, belív, érettségi vizsgához*
+
+30. Törzslap külív, belív, szakmai vizsgához+
+
+31. Továbbtanulók nyilvántartása
+
+32. Jegyzőkönyv a tanuló- és gyermekbalesetekről*
+
+33. Nyilvántartás a tanuló- és gyermekbalesetekről*
+
+34. Egyéni foglalkozási napló (a zeneművészeti szakközépiskolában)
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/oktatas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/oktatas.txt
new file mode 100644
index 00000000..5dfe6746
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/oktatas.txt
@@ -0,0 +1,95 @@
+
+====== Óraszámokra vonatkozó szabályok ======
+
+"Az óraszám nem csökkenhet az előírt óraszám 90%-a alá"
+
+==== 1993. évi LXXIX. törvény a közoktatásról ====
+Értelmező rendelkezések
+
+121. § (1) E törvény alkalmazásában
+
+26. oktatás munkarendje: az iskola helyi tantervében meghatározott tananyag elsajátítására történő felkészítés megszervezésének rendje, amely ha a tanórai foglalkozások száma eléri - az iskolában tanítási év átlagában - az e törvény 52. §-ának (3)-(5) bekezdésében meghatározott kötelező tanórai foglalkozások
+
+a) kilencven százalékát, nappali oktatás,
+
+b) ötven százalékát, esti oktatás,
+
+c) tíz százalékát, levelező oktatás
+
+munkarendje szerint folyó oktatás. Más sajátos munkarend szerint folyik az oktatás, ha a tanulónak tanórai foglalkozáson egyáltalán nem kell részt vennie, illetve, ha a tanórai foglalkozások száma nem éri el a levelező oktatásra meghatározott óraszámot;
+
+====== Kötelező tanórai foglalkozások ======
+
+==== 1993. évi LXXIX. törvény a közoktatásról ====
+
+52. § (3) A tanuló kötelező tanórai foglalkozása - a (4) és (6) bekezdés kivételével - nem lehet több
+
+a) az első-harmadik évfolyamon napi négy tanítási óránál;
+
+b) a negyedik-hatodik évfolyamon napi négy vagy öt (heti átlagban négy és fél) tanítási óránál;
+
+c) a hetedik-nyolcadik évfolyamon napi öt tanítási óránál;
+
+d) a kilencedik-tizedik évfolyamon napi öt vagy hat (heti átlagban öt és fél) tanítási óránál;
+
+e) középiskolában - az f)-g) pontban meghatározott kivétellel - a tizenegyedik évfolyamtól napi hat tanítási óránál;
+
+f) a szakképzésben az iskolai és iskolán kívüli gyakorlati képzés a szakképzési törvényben meghatározott időnél;
+
+g) szakképzési évfolyamon, a szakmai elméleti tanítási órák száma napi hét tanítási óránál, egy tanítási napon a szakmai elméleti és szakmai gyakorlati tanítási órák száma napi nyolc tanítási óránál; ha a szakiskola vagy a szakközépiskola művészeti szakmai vizsgára készít fel, párhuzamos oktatás esetén heti átlagban napi nyolc tanítási óránál. Ha a szakiskola vagy a szakközépiskola párhuzamos oktatás keretében készít fel a művészeti szakmai vizsgára, a tanítási év átlagában az általános műveltséget megalapozó pedagógiai szakasz követelményeinek átadására fordított tanítási órák száma nem lehet kevesebb - a (3) bekezdés b)-e) pontjában - az évfolyamra meghatározott tanórai foglalkozás ötven százalékánál.
+
+
+====== Maximális óraszámok ======
+
+==== 243/2003. (XII. 17.) Korm. rendelet ====
+
+a Nemzeti alaptanterv kiadásáról, bevezetéséről és alkalmazásáról
+
+A tanítási órákon való részvétel rendje
+
+6. § (1) A tanuló kötelező és szabadon választott tanítási óráinak
+száma - ha e rendelet másképp nem rendelkezik - egy tanítási napon nem
+lehet több
+
+a) öt tanítási óránál az első-negyedik évfolyamon,
+
+b) hat tanítási óránál az ötödik-hatodik évfolyamon,
+
+c) hét tanítási óránál a hetedik-tizedik évfolyamon,
+
+d) nyolc tanítási óránál a tizenegyedik-tizenharmadik évfolyamon.
+
+(2) Ha az iskolában nemzeti-etnikai kisebbségi iskolai nevelés és
+oktatás folyik, továbbá a két tanítási nyelvű iskolai oktatásban az
+
+(1) bekezdés a), b) és c) pontjában meghatározott tanítási órák száma
+eggyel megnövelhető.
+
+7. § (1) A tanuló kötelező és szabadon választott tanítási óráinak
+összege - ha e rendelet másképp nem rendelkezik - egy tanítási héten,
+a közoktatásról szóló törvény 52. §-ának (3)-(5) bekezdésében
+meghatározott időkeretet
+
+a) az első-negyedik évfolyamon legfeljebb kettő,
+
+b) az ötödik-hatodik évfolyamon legfeljebb három,
+
+c) a hetedik-tizenharmadik évfolyamon legfeljebb négy,
+
+d) ha az iskolában nemzeti-etnikai kisebbségi iskolai nevelés és
+oktatás folyik, továbbá a két tanítási nyelvű iskolai oktatásban
+
+d/a) az első-nyolcadik évfolyamon legfeljebb négy,
+
+d/b) a kilencedik-tizenharmadik évfolyamon legfeljebb öt
+
+tanítási órával haladhatja meg.
+
+(2) Ha a szakképző iskola párhuzamos oktatás keretében készít fel a
+művészeti szakmai vizsgára, a tanítási órák heti átlagban nem
+haladhatják meg a napi nyolc órát.
+
+
+====== Az egyes képzési formák előírt óraszámai ======
+
+(?) \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/osztalyozovizsga.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/osztalyozovizsga.txt
new file mode 100644
index 00000000..94237bac
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/osztalyozovizsga.txt
@@ -0,0 +1,192 @@
+
+====== 11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről ======
+
+21. § (1)
+
+(2)
+
+(3) A tanuló osztályzatait évközi teljesítménye és érdemjegyei vagy az osztályozó vizsgán, a különbözeti vizsgán, a javítóvizsgán nyújtott teljesítménye alapján kell megállapítani. Osztályozó vizsga a szakképző iskolában - a szakképzésre vonatkozó rendelkezések szerint - szervezett beszámoltató vizsga is (a továbbiakban a felsorolt vizsgák együtt: tanulmányok alatti vizsga). A tanulmányok alatti vizsgát iskolában - illetve e rendeletben meghatározottak szerint - független vizsgabizottság előtt lehet tenni. Különbözeti vizsgát a tanuló abban az iskolában tehet, amelyben tanulmányait folytatni kívánja. A szabályosan megtartott tanulmányok alatti vizsga nem ismételhető.
+
+(4) A félévi és a tanév végi osztályzat megállapításához a tanulónak osztályozó vizsgát kell tennie, ha
+
+a) felmentették a tanórai foglalkozásokon való részvétele alól,
+
+b) engedélyezték, hogy egy vagy több tantárgy tanulmányi követelményének egy tanévben, illetve az előírtnál rövidebb idő alatt tegyen eleget,
+
+c) a 20. § (6) bekezdésében meghatározott időnél többet mulasztott, és a nevelőtestület döntése alapján osztályozó vizsgát tehet,
+
+d)
+
+e) a tanuló a félévi, illetőleg év végi osztályzatának megállapítása érdekében független vizsgabizottság előtt tesz vizsgát.
+
+25. § (1) A különbözeti és a beszámoltató vizsgákra tanévenként legalább kettő vizsgaidőszakot ki kell jelölni. Javítóvizsga letételére az augusztus 15-től augusztus 31-ig terjedő időszakban, osztályozó, különbözeti és beszámoltató vizsga esetén a vizsgát megelőző három hónapon belül kell a vizsgaidőszakot kijelölni. Az iskola osztályozó vizsgát a tanítási év során bármikor szervezhet. A vizsgák időpontjáról a tanulót a jelentkezéskor tájékoztatni kell.
+
+(2) Az iskolában tartott tanulmányok alatti vizsga esetén az igazgató, a független vizsgabizottság előtti vizsga esetén a vizsgáztatásra kijelölt intézmény vezetője engedélyezheti, hogy a tanuló az (1) bekezdés szerint előre meghatározott időponttól eltérő időben tegyen vizsgát.
+
+26. § (1) A tanulmányok alatti vizsgát háromtagú vizsgabizottság előtt kell letenni. Ha a tanulmányok alatti vizsgát az iskola szervezi, a vizsgabizottság az iskola pedagógusaiból áll. A vizsgáztatásra kijelölt intézmény által szervezett független vizsgabizottságnak nem lehet tagja az a pedagógus, aki abban az iskolában tanít, amellyel a tanuló tanulói jogviszonyban áll.
+
+(2) A tanulmányok alatti vizsga követelményeit, részeit (írásbeli, szóbeli, gyakorlati) és az értékelés rendjét a nevelőtestület a helyi tanterv alapján határozza meg, és a helyben szokásos módon nyilvánosságra hozza. A tanulmányok alatti vizsga - ha azt az iskolában szervezik - vizsgabizottságának elnökét és tagjait az igazgató, a független vizsgabizottság elnökét és tagjait pedig a vizsgáztatásra kijelölt intézmény vezetője bízza meg. A tanulmányok alatti vizsgák lebonyolításakor figyelemmel kell lenni e rendelet 9. számú mellékletének rendelkezéseire.
+
+=== Záradék ===
+
+4. Tanulmányait évfolyamismétléssel kezdheti meg, illetve osztályozó vizsga letételével folytathatja. Bn., TI., N.
+
+==== 9. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez ====
+
+=== A tanulmányok alatti vizsgák eljárási szabályai ===
+
+A tanulmányok alatti vizsga vizsgabizottsága
+
+1.1. A vizsgabizottság elnöke felel a vizsga szakszerű és törvényes megtartásáért, a vizsgabizottság törvényes működéséért. A vizsgabizottság elnökének feladatai különösen:
+
+a) meggyőződik arról, hogy a vizsgázó jogosult-e a vizsga megkezdésére, illetőleg teljesítette-e a vizsga letételéhez előírt feltételeket, továbbá szükség esetén kezdeményezi a szabálytalanul vizsgázni szándékozók kizárását,
+
+b) vezeti a szóbeli vizsgákat és a vizsgabizottság értekezleteit,
+
+c) átvizsgálja a vizsgával kapcsolatos iratokat, a szabályzatban foglaltak szerint aláírja a vizsga iratait,
+
+d) a vizsgabizottság értekezletein véleményeltérés esetén szavazást rendel el.
+
+1.2. Az elnök feladatainak ellátásába a vizsgabizottság tagjait bevonhatja. A kérdező tanár csak a vizsga tárgya szerinti tantárgynak megfelelő szakos tanári végzettséggel és szakképzettséggel rendelkező pedagógus lehet.
+
+1.3. A vizsgabizottság munkáját, a vizsgát az igazgató készíti elő. Az igazgató felel a vizsga törvényes előkészítéséért és zavartalan lebonyolítása feltételeinek megteremtéséért.
+
+1.4. Az igazgató feladata különösen:
+
+a) dönt minden olyan, a vizsga előkészítésével és lebonyolításával összefüggő ügyben, amelyet a helyben meghatározott szabályok nem utalnak más jogkörébe,
+
+b) írásban kiadja az előírt megbízásokat, szükség esetén gondoskodik a helyettesítésről,
+
+c) ellenőrzi a vizsgáztatás rendjének megtartását,
+
+d) minden szükséges intézkedést megtesz annak érdekében, hogy a vizsgát szabályosan, pontosan meg lehessen kezdeni és be lehessen fejezni.
+
+1.5. Az igazgató feladatainak ellátásában közreműködhet - az igazgató megbízása alapján - az igazgató helyettese vagy más megbízottja.
+
+1.6. A vizsga reggel nyolc óra előtt nem kezdhető el, és legfeljebb tizennyolc óráig tarthat.
+
+=== Az írásbeli vizsga menete ===
+
+2.1. Az írásbeli vizsgára vonatkozó rendelkezéseket kell alkalmazni a gyakorlati vizsgára, amennyiben a vizsgafeladat megoldását valamilyen rögzített módon, a vizsga befejezését követően a vizsgáztató tanár által javítható formában kell elkészíteni (pl. rajz, műszaki rajz, festmény, számítástechnikai program). A gyakorlati vizsgán a 2.8. pont szerinti szabályokat akkor kell alkalmazni, ha a vizsgatantárgy általános vizsgakövetelményei eltérő rendelkezést nem állapítanak meg.
+
+2.2. A vizsgateremben az ülésrendet a vizsga kezdetekor a vizsgáztató tanár úgy köteles kialakítani, hogy a vizsgázók egymást ne zavarhassák és ne segíthessék.
+
+2.3. A vizsga kezdetekor a vizsgaelnök a vizsgáztató tanár jelenlétében megállapítja a jelenlévők személyazonosságát, ismerteti az írásbeli vizsga szabályait, majd kihirdeti az írásbeli tételeket.
+
+2.4. A vizsgázóknak a feladat elkészítéséhez útbaigazítás, segítség nem adható.
+
+2.5. Az írásbeli vizsgán csak a vizsgát szervező iskola bélyegzőjével ellátott lapon, feladatlapokon, tétellapokon (a továbbiakban együtt: feladatlap) lehet dolgozni. A rajzokat ceruzával, minden egyéb írásbeli munkát tintával (golyóstollal) kell elkészíteni. A feladatlap előírhatja az írógép, számítógép használatát.
+
+2.6. Az íróeszközökről a vizsgázók, az iskola helyi tanterve alapján a vizsgához szükséges segédeszközökről az iskola gondoskodik; azokat egymás között nem cserélhetik.
+
+2.7. A vizsgázó az írásbeli válaszok kidolgozásának megkezdése előtt mindegyik átvett feladatlapon feltünteti nevét, a vizsganap keltét, a tantárgy megnevezését. Vázlatot, jegyzetet csak ezeken a lapokon lehet készíteni.
+
+2.8. A vizsgázónak az írásbeli feladatok megválaszolásához rendelkezésre álló maximális idő vizsgatantárgyanként
+
+a) negyvenöt perc,
+
+b) nemzeti, etnikai kisebbség nyelve, illetve célnyelv használata esetén hatvan perc,
+
+c) magyar nyelv és irodalom, valamint nemzeti, etnikai kisebbségi anyanyelv és irodalom vizsgatantárgy esetén hatvan perc.
+
+2.9. Ha az írásbeli vizsgát bármilyen esemény megzavarja, a kiesett idővel a rendelkezésre álló időt meg kell növelni.
+
+2.10. A közoktatási törvény 30. §-ának (9) bekezdése alapján a vizsgázó kérésére, az igazgató engedélye alapján
+
+a) az írásbeli feladatok megválaszolásához rendelkezésre álló időt legfeljebb harminc perccel meg kell növelni,
+
+b) lehetővé kell tenni, hogy az iskolai tanulmányok során alkalmazott segédeszközt használja,
+
+c) engedélyezni kell, hogy írásbeli vizsga helyett szóbeli vizsgát tegyen.
+
+2.11. Egy vizsganapon egy vizsgázó vonatkozásában legfeljebb két írásbeli vizsgát lehet megtartani. A vizsgák között pihenőidőt kell a vizsgázók részére biztosítani. A pótlóvizsga (2.15-2.16. pontok) harmadik vizsgaként - szükség esetén újabb pihenőidő beiktatásával - is megszervezhető.
+
+2.12. Ha a vizsgáztató tanár az írásbeli vizsgán szabálytalanságot észlel, elveszi a vizsgázó feladatlapját, ráírja, hogy milyen szabálytalanságot észlelt, továbbá az elvétel pontos idejét, aláírja és visszaadja a vizsgázónak, aki folytathatja az írásbeli vizsgát. A vizsgáztató tanár a szabálytalanság tényét és a megtett intézkedést írásban jelenti az igazgatónak.
+
+2.13. Az igazgató az írásbeli vizsga befejezését követően haladéktalanul kivizsgálja a szabálytalanság elkövetésével kapcsolatos bejelentést. Megállapításait részletes jegyzőkönyvbe foglalja. A jegyzőkönyvnek tartalmaznia kell a vizsgázó és a vizsgáztató tanár nyilatkozatát, továbbá minden olyan tényt, adatot, információt, esemény leírását, amely lehetővé teszi a szabálytalanság elkövetésének kivizsgálását. A jegyzőkönyvet a vizsgáztató tanár, az iskola igazgatója és a vizsgázó írja alá. A vizsgázó külön véleményét a jegyzőkönyvre rávezetheti.
+
+2.14. Az igazgató az írásbeli vizsga folyamán készített jegyzőkönyveket és a feladatlapokat - az üres és a piszkozatokat tartalmazó feladatlapokkal együtt - a kidolgozási idő lejártával átveszi a vizsgáztató tanároktól. A jegyzőkönyveket aláírásával - az időpont feltüntetésével - lezárja és a vizsgairatokhoz mellékeli.
+
+2.15. Ha a vizsgázó az írásbeli vizsgáról fel nem róható okból elkésik, távol marad, a megkezdett vizsgáról engedéllyel eltávozik mielőtt a válaszadást befejezné
+
+a) az igazgató - ha ehhez a feltételek megteremthetőek - hozzájárulhat ahhoz, hogy az adott vizsganapon, vagy a vizsgázó és az intézmény számára megszervezhető legközelebbi időpontban a vizsgázó pótlóvizsgát tegyen,
+
+b) a vizsgázó kérésére a vizsga megszakításáig az írásbeli vizsgakérdésekre adott válaszokat értékelni kell.
+
+2.16. Ha a vizsgázó az írásbeli vizsgáról felróható okból elkésik, távol marad, vagy a vizsgáról engedély nélkül eltávozik, az adott vizsgatantárgyból javítóvizsgát tehet az igazgató által meghatározott időben.
+
+2.17. A 2.16. és e pont alkalmazásában a vizsgázónak fel nem róható ok, minden olyan a vizsgán való részvételt gátló esemény, körülmény, amelynek bekövetkezése nem vezethető vissza a vizsgázó szándékos vagy gondatlan magatartására.
+
+2.18. Az írásbeli vizsga feladatlapjait a vizsgáztató tanár haladéktalanul kijavítja, a hibákat, tévedéseket a tanuló által használt tintától jól megkülönböztethető színű tintával megjelöli, röviden értékeli a vizsgakérdésekre adott megoldásokat.
+
+2.19. Ha a vizsgáztató tanár a feladatlapok javítása során arra a feltételezésre jut, hogy a vizsgázó meg nem engedett segédeszközt használt, segítséget vett igénybe, megállapítását rávezeti a feladatlapra, és értesíti az igazgatót.
+
+2.20. Ha a vizsgázó a vizsga során szabálytalanságot követett el, az iskola igazgatójából és két másik - a vizsgabizottság munkájában részt nem vevő - tanárból álló háromtagú bizottság a cselekmény súlyosságának mérlegelésével a következő döntést hozhatja:
+
+a) a vizsgakérdésre adott megoldást részben vagy egészben érvénytelennek nyilvánítja, és az érvénytelen rész figyelmen kívül hagyásával értékeli a vizsgán nyújtott teljesítményt,
+
+b) az adott vizsgatantárgyból - a javítóvizsga kivételével - a vizsgázót javítóvizsgára utasítja.
+
+2.21. A szabálytalansággal összefüggésben hozott döntést és annak indokait határozatba kell foglalni.
+
+=== A szóbeli vizsga menete ===
+
+3.1. Egy vizsgázónak egy napra legfeljebb három vizsgatárgyból szervezhető szóbeli vizsga.
+
+3.2. A vizsgázónak legalább tíz perccel korábban meg kell jelennie a vizsga helyszínén, mint amely időpontban az a vizsgacsoport megkezdi a vizsgát, amelybe beosztották.
+
+3.3. A vizsgateremben egy időben legfeljebb hat vizsgázó tartózkodhat.
+
+3.4. A szóbeli vizsgán a vizsgázó vizsgatantárgyanként húz tételt vagy kifejtendő feladatot, és kiválasztja a tétel kifejtéséhez szükséges segédeszközt. Az egyes tantárgyak szóbeli vizsgáihoz szükséges segédeszközökről a vizsgáztató tanár gondoskodik.
+
+3.5. A tételben szereplő kérdések megoldásának sorrendjét a vizsgázó határozza meg.
+
+3.6. A vizsgázó útbaigazítás és támogatás nélkül, önállóan felel, de ha elakad, a vizsgabizottság tagjaitól vagy a vizsgáztató tanártól kaphat segítséget. A vizsgázók a vizsgateremben egymással nem beszélgethetnek, egymást nem segíthetik.
+
+3.7. Minden vizsgázónak vizsgatantárgyanként legalább húsz perc gondolkodási időt kell biztosítani a felkészülésre. A felkészülési idő alatt a vizsgázó jegyzetet készíthet, de gondolatait szabad előadásban kell elmondania.
+
+3.8. Egy-egy vizsgatantárgyból a feleltetés időtartama tíz percnél nem lehet több. A vizsgabizottság tagjai a tétellel kapcsolatosan a vizsgázónak kérdéseket tehetnek fel, ha meggyőződtek arról, hogy a vizsgázó a tétel kifejtését befejezte vagy a tétel kifejtésében elakadt. A vizsgázót nem szabad félrevezetni, gondolkodásában, a tétel kifejtésében megzavarni. A vizsgázó a tétel kifejtésében akkor szakítható félbe, ha a rendelkezésére álló idő letelt.
+
+3.9. Ha a vizsgázó a húzott tétel anyagából teljes tájékozatlanságot árul el, az elnök egy alkalommal póttételt húzat vagy pótfeladatot biztosít részére.
+
+3.10. Ha vizsgázó a feleletet befejezte, a következő vizsgatantárgyból történő tételhúzás előtt, legalább harminc perc pihenőidőt kell számára biztosítani, amely alatt a vizsgahelyiséget elhagyhatja.
+
+3.11. Ha a vizsgázó befejezte a tétel kifejtését, a vizsgabizottság elnöke rávezeti a javasolt értékelést a vizsgajegyzőkönyvre.
+
+3.12. A közoktatásról szóló törvény 30. §-ának (9) bekezdése alapján a vizsgázó kérésére, az igazgató engedélye alapján
+
+a) a húsz perc gondolkodási időt legfeljebb tíz perccel meg kell növelni,
+
+b) engedélyezni kell, hogy a szóbeli vizsga helyett írásbeli vizsgát tegyen.
+
+3.13. Ha a vizsgázónak a közoktatásról szóló törvény 30. §-ának (9) bekezdése alapján engedélyezték, hogy az írásbeli vizsga helyett szóbeli vizsgát tegyen, és a vizsga írásbeli és szóbeli vizsgarészekből áll, két vizsgatételt kell húznia és kifejtenie. A felkészüléshez és a tétel kifejtéséhez rendelkezésre álló időt tételenként kell számítani. A vizsgázó kérésére a második tétel kifejtése előtt legfeljebb tíz perc pihenőidőt kell adni, amely alatt a vizsgázó a vizsgahelyiséget elhagyhatja.
+
+3.14. Ha a vizsgázó a szóbeli vizsga helyett írásbeli vizsgát tesz, a vizsgatétel kihúzása után külön helyiségben, vizsgáztató tanár mellett készíti el dolgozatát. A dolgozat elkészítésére harminc percet kell biztosítani. A dolgozatot a vizsgázó vagy a vizsgázó kérésére a vizsgáztató tanár felolvassa.
+
+3.15. Ha a szóbeli vizsgán a vizsgázó szabálytalanságot követ el, vagy a vizsga rendjét zavarja, a vizsgabizottság elnöke figyelmezteti a vizsgázót, hogy a szóbeli vizsgát befejezheti ugyan, de ha szabálytalanság elkövetését, a vizsga rendjének megzavarását, a vizsgabizottság megállapítja, az elért eredményt megsemmisítheti. A figyelmeztetést a vizsga jegyzőkönyvében fel kell tüntetni.
+
+3.16. A szóbeli vizsgán és a gyakorlati vizsgán elkövetett szabálytalanság, a felróható, vagy fel nem róható okból történő vizsga megszakítás, vagy a vizsgán meg nem jelenés esetében az igazgató a 2.13., 2.15-2.18., 2.21. pontokban leírtak szerint jár el.
+
+=== A gyakorlati vizsgarész ===
+
+4.1. A gyakorlati vizsgafeladatokat - legkésőbb a vizsgát megelőző két hónappal - a vizsgabizottság elnöke javaslatára az igazgató hagyja jóvá.
+
+4.2. A gyakorlati vizsgarészt akkor lehet megkezdeni, ha a vizsgabizottság elnöke meggyőződött a feltételek meglétéről. A gyakorlati vizsgarész a vizsgafeladatok elvégzéséhez szükséges személyi és tárgyi feltételek megléte esetén kezdhető meg, illetőleg folytatható.
+
+4.3. A gyakorlati vizsgarész megkezdése előtt a vizsgázókat tájékoztatni kell a gyakorlati vizsgarész rendjéről és a vizsgával kapcsolatos egyéb tudnivalókról, továbbá a gyakorlati vizsgarész helyére és a munkavégzésre vonatkozó munkavédelmi, tűzvédelmi, egészségvédelmi előírásokról.
+
+4.4. A gyakorlati vizsgafeladatok végrehajtásához az adott tantárgynál helyben meghatározott idő áll a rendelkezésére. Ebbe az időbe a vizsgafeladatok ismertetésének ideje nem számít bele. A gyakorlati vizsgarész végrehajtásához rendelkezésre álló idő feladatok szerinti megosztása tekintetében a vizsgafeladatok leírása tartalmazhat rendelkezéseket.
+
+4.5. Nem számítható be a vizsgafeladatok végrehajtására rendelkezésre álló időbe a vizsgázónak fel nem róható okból kieső idő.
+
+4.6. A gyakorlati vizsgarészt - a vizsgafeladatok számától függetlenül - egy érdemjeggyel kell értékelni.
+
+4.7. A vizsgamunkát érdemjeggyel kell értékelni. Az értékelésben fel kell tüntetni a vizsgázó nevét, születési helyét és idejét, a tanszak megnevezését, a vizsgamunka tárgyát, a végzett munka értékelését és a javasolt osztályzatot. Az értékelést a gyakorlati oktatást végző szaktanár írja alá.
+
+4.8. A vizsgázó gyakorlati vizsgarész osztályzatát a vizsgamunkára és a vizsga helyszínén készített önálló gyakorlati alkotásra kapott érdemjegyek alapján kell meghatározni.
+
+====== 11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről ======
+
+===== Irattári terv =====
+
+22. Vizsgajegyzőkönyvek 5
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogiai_program.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogiai_program.txt
new file mode 100644
index 00000000..b911a255
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogiai_program.txt
@@ -0,0 +1,64 @@
+
+===== A Pedagógiai Programról =====
+
+==== 1993. évi LXXIX. törvény a közoktatásról ====
+
+44. § (1) A nevelési-oktatási intézményben a nevelő és oktató munka
+nevelési, illetve pedagógiai program szerint folyik. A nevelési,
+illetve pedagógiai programot a nevelőtestület fogadja el, és a
+fenntartó jóváhagyásával válik érvényessé. A fenntartó a nevelési
+program és a pedagógiai program jóváhagyása előtt köteles az adott
+intézménytípusnak megfelelő szakterületen eljárni jogosult közoktatási
+szakértő véleményét beszerezni. Ha ilyen közoktatási szakértő nincs az
+intézménytípusnak megfelelő szakterület, olyan szakember kell
+beszerezni, akinek az adott intézménytípusban legalább öt év
+pedagógus-munkakörben szerzett gyakorlata van.
+
+(2) A nevelési, illetve pedagógiai programot a nevelési-oktatási
+intézmény honlapján, annak hiányában a helyben szokásos módon
+nyilvánosságra kell hozni. A szülőket a megelőző tanév végén
+tájékoztatni kell azokról a tankönyvekről, tanulmányi segédletekről,
+taneszközökről, ruházati és más felszerelésekről, amelyekre a
+következő tanévben a nevelő és oktató munkához szükség lesz.
+Tájékoztatni kell őket továbbá az iskolától kölcsönözhető
+tankönyvekről, taneszközökről és más felszerelésekről, valamint arról
+is, hogy az iskola milyen segítséget tud nyújtani a szülői kiadások
+csökkentéséhez.
+
+45. §
+(2) Az iskola pedagógiai programot, annak részeként - ha e törvény másként nem rendelkezik - a Nemzeti alaptanterv alapján helyi tantervet készít,
+vagy az ilyen módon készített helyi tantervek közül választ, és azt építi be helyi tantervként a pedagógiai programjába. Az iskola az oktatásért
+felelős miniszter által kiadott kerettantervek alapján is elkészítheti helyi tantervét, illetve a kerettantervet is beépítheti helyi tantervként a
+pedagógiai programjába. A középiskola a helyi tantervének elkészítéséhez figyelembe veszi az érettségi vizsga vizsgatárgyainak vizsgakövetelményeit is.
+
+46. § (1) Az iskola helyi tantervének - a szakképzés kivételével - biztosítania kell az iskolaváltást, a tanuló átvételét, szükség esetén különbözeti
+vizsgával vagy évfolyamismétléssel.
+
+48. § (1) Az iskola pedagógiai programja meghatározza:
+
+a) az iskola nevelési programját, ennek keretén belül
+ - az iskolában folyó nevelő-oktató munka pedagógiai alapelveit, céljait, feladatait, eszközeit, eljárásait,
+ - a személyiségfejlesztéssel kapcsolatos pedagógiai feladatokat,
+ - a közösségfejlesztéssel kapcsolatos feladatokat,
+ - a beilleszkedési, magatartási nehézségekkel összefüggő pedagógiai tevékenységet,
+ - a tehetség, képesség kibontakoztatását segítő tevékenységet,
+ - a gyermek- és ifjúságvédelemmel kapcsolatos feladatokat,
+ - a tanulási kudarcnak kitett tanulók felzárkóztatását segítő programot,
+ - a szociális hátrányok enyhítését segítő tevékenységet,
+ - a pedagógiai program végrehajtásához szükséges nevelő-oktató munkát segítő eszközök és felszerelések jegyzékét,
+ - a szülő, tanuló, iskolai és kollégiumi pedagógus együttműködésének formáit, továbbfejlesztésének lehetőségeit,
+
+b) az iskola helyi tantervét, ennek keretén belül
+ - az iskola egyes évfolyamain tanított tantárgyakat, a kötelező és választható tanórai foglalkozásokat, valamint azok óraszámait, az előírt tananyagot és követelményeit,
+ - az oktatásban alkalmazható tankönyvek, tanulmányi segédletek és taneszközök kiválasztásának elveit, figyelembe véve a tankönyv ingyenes igénybevétele biztosításának kötelezettségét,
+ - az iskola magasabb évfolyamára lépés feltételeit,
+ - az iskolai beszámoltatás, az ismeretek számonkérésének követelményeit és formáit, a tanuló magatartása, szorgalma értékelésének és minősítésének követelményeit, továbbá - jogszabály keretei között - a tanuló teljesítménye, magatartása és szorgalma értékelésének, minősítésének formáját,
+ - moduláris oktatás esetén az egyes modulok értékelését és minősítését, valamint beszámítását az iskolai évfolyam sikeres befejezésébe,
+ - a középszintű érettségi vizsga témaköreit,
+
+(4) Az iskola pedagógiai programjában meg kell határozni
+
+a) az iskolai írásbeli beszámoltatások formáit, rendjét, korlátait, a tanulók tudásának értékelésében betöltött szerepét, súlyát,
+
+b) az otthoni (napközis és tanulószobai) felkészüléshez előírt írásbeli és szóbeli feladatok meghatározásának elveit és korlátjait.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogus_munkakor.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogus_munkakor.txt
new file mode 100644
index 00000000..e55b5ecc
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/pedagogus_munkakor.txt
@@ -0,0 +1,74 @@
+====== A szükséges szakképesítésről ======
+
+17. § (1) Ha e törvény másképp nem rendelkezik, nevelési-oktatási intézményben pedagógus-munkakörben az alkalmazható, aki az e törvényben meghatározott felsőfokú iskolai (egyetemi vagy főiskolai szintű) végzettséggel és szakképzettséggel rendelkezik. A megfelelő felsőfokú iskolai végzettségek és szakképzettségek a következők:
+
+b) az iskolai oktatás első-negyedik évfolyamán
+
+- valamennyi tantárgyhoz a tanítói, konduktor-tanítói, konduktori (a továbbiakban a konduktori és a konduktor-tanítói végzettség együtt: konduktor),
+
+- a testnevelés tantárgyhoz a tantárgynak megfelelő tanári,
+
+- feltéve, hogy e területeken az iskolában a helyi tantervben foglaltak alapján emelt szintű oktatás folyik, a művészetek, az idegen nyelv, a nemzetiségi és etnikai kisebbségi nyelv és irodalom tantárgyakhoz a tantárgynak megfelelő tanári;
+
+c) az iskolai oktatás ötödik-hatodik évfolyamán a nem szakrendszerű oktatásban a b) pontban meghatározottak szerinti, a szakrendszerű oktatásban a tantárgynak megfelelő szakos tanári vagy a műveltségi területnek megfelelő képesítést nyújtó tanítói;
+
+d) az iskolai oktatás hetedik-nyolcadik, továbbá a középiskola kivételével a kilencedik-tizedik évfolyamán a tantárgynak megfelelő szakos tanári;
+
+e) középiskolában a kilencedik évfolyamtól kezdődően a tantárgynak megfelelő szakos egyetemi szintű tanári, a művészetek, a testnevelés, a technika-gyakorlati foglalkozás tantárgyak esetén a tantárgynak megfelelő tanári;
+
+g) szakközépiskolában és szakiskolában a szakmai elméleti tantárgyat vagy szakmai előkészítő ismeretet, valamint a szakmai alapozó és a pályaorientáció ismeretet oktató pedagógusnak a képzés szakirányának megfelelő tanári vagy a képzés szakirányának megfelelő felsőfokú, a pályaorientáció és a szakmai alapozó oktatásban, továbbá a d) pontban meghatározott;
+
+i) szakközépiskolában és szakiskolában a gyakorlati képzést végző pedagógusnak, továbbá gimnáziumban a munkába állást előkészítő, illetve segítő elméleti és gyakorlati foglalkozást tartó pedagógusnak a képzés szakirányának megfelelő tanári vagy a képzés szakirányának megfelelő felsőfokú;
+
+j) napközi otthoni és tanulószobai foglalkozáson az iskolatípusnak, kollégiumban az érdekelt iskoláknak megfelelő, a b)-f) pontban felsorolt vagy szociálpedagógus, pedagógiai szakpszichológus, pedagógia szakos, illetve nevelőtanár szakos;
+
+k) alapfokú művészetoktatási intézményben, művészeti szakközépiskolában, szakiskolában a művészeti szakmai tantárgyakat oktató pedagógusnak a művészeti tárgynak megfelelő szakirányú tanári, az alapfokú művészetoktatási intézmény előképző és alapfokú évfolyamain továbbá a művészeti tárgynak megfelelő szakirányú tanítói vagy művész; művészeti szakközépiskolában, ha van a képzés szakirányának megfelelő egyetemi szintű képzés, a tizenegyedik évfolyamtól a művészeti tárgynak megfelelő egyetemi szintű tanári, illetve művész;
+
+l) a j) pontban fel nem sorolt tanórán kívüli foglalkozás megtartásához a foglalkozás tartalmi követelményeihez igazodó, a b)-j) pontban felsorolt;
+
+m) iskolai, kollégiumi könyvtárostanárnak (tanítónak) az iskolában, kollégiumban pedagógus-munkakör betöltésére jogosító a b)-e), illetve j) pontban felsorolt tanítói, tanári és könyvtáros
+
+végzettség és szakképzettség.
+
+(2) Idegen nyelv oktatására - minden iskolatípusban - alkalmazható, aki nyelvtanári vagy idegen nyelv- és irodalom szakos tanári végzettséggel és szakképzettséggel rendelkezik.
+
+(3) Ha az óvodai nevelés, iskolai nevelés és oktatás, kollégiumi nevelés nyelve a nemzeti vagy etnikai kisebbség nyelve, illetve nem magyar nyelv, az adott nyelven folyó nevelő és oktató munkához pedagógus-munkakörben - a nevelési-oktatási intézmény típusához igazodva - az alkalmazható, aki
+
+a) nemzetiségi óvodapedagógus, nemzetiségi tanítói oklevéllel rendelkezik,
+
+b) az (1) bekezdésben meghatározott felsőfokú iskolai végzettséggel és szakképzettséggel, valamint az iskolai és kollégiumi nevelés-oktatás nyelvének tanítására jogosító tanítói, tanári, nyelvtanári végzettséggel és szakképzettséggel rendelkezik,
+
+c) az (1) bekezdés d)-e) pontjában meghatározott felsőfokú iskolai végzettséggel és szakképzettséggel rendelkezik, továbbá az alapképzésben vagy a szakirányú továbbképzésben elsajátította az adott tantárgy kisebbségi nyelven történő oktatásához, illetve nem magyar nyelven történő oktatásához szükséges nyelvi ismereteket,
+
+d) a Magyar Köztársaságban honosított, az (1) bekezdés szerinti pedagógus-munkakör betöltésére jogosító, a tanítás nyelvének megfelelő oklevéllel rendelkezik.
+
+(4) Iskolapszichológusként az alkalmazható, aki pedagógiai szakpszichológus végzettséggel és szakképzettséggel, vagy pszichológus és pedagógus végzettséggel és szakképzettséggel rendelkezik.
+
+(5) Azt, aki az (1)-(4) bekezdésben előírt felsőfokú iskolai végzettsége és szakképzettsége mellett egyetemi vagy főiskolai szakirányú továbbképzésben pedagógus-szakvizsgát (a továbbiakban: pedagógus-szakvizsga) tett, szakvizsgázott pedagógus-munkakörben kell foglalkoztatni.
+
+(6) A pedagógus-szakvizsgára történő felkészülés
+
+a) hozzájárul az alapképzésben megszerzett ismeretek és jártasság megújításához, kiegészítéséhez, a pedagógus-munkakörrel együtt járó feladatok ellátásához szükséges gyakorlat, képesség, pedagógus pályára való alkalmasság fejlesztéséhez,
+
+b) hozzájárulhat a vezetői, a szakértői, a vizsgaelnöki, a vezetőtanári (gyakorlatvezető óvónői, tanítói) tevékenységhez, a pedagógiai szakmai szolgáltatások, a pedagógiai szakszolgálatok ellátásához szükséges ismeretek megszerzéséhez, továbbá
+
+c) az alapképzésben szerzett ismeretekhez szorosan nem kötődő új ismereteket nyújthat.
+
+(7) Tantárgyi modul (tánc és dráma, hon- és népismeret, egészségtan, mozgókép- és médiaismeret, etika, társadalomismeret stb.) oktatására a megfelelő szakos tanári végzettség és szakképzettség, vagy a munkakörre előírt végzettség és szakképzettség mellett a tantárgyi modulnak megfelelő szakirányú továbbképzésben szerzett szakképzettség jogosít.
+
+(8) Nem szakrendszerű oktatásban a tanár akkor taníthat, ha legalább százhúsz órás pedagógus-továbbképzés vagy szakirányú továbbképzés keretében történő felkészülés keretében elsajátította a hat-tizenkét éves korosztály életkori sajátosságaihoz illeszkedő pedagógiai, pszichológiai ismereteket és az eredményes felkészítéséhez szükséges módszereket. E rendelkezéseket alkalmazni kell a szakkollégiumi végzettséggel nem rendelkező tanítóra is, azzal az eltéréssel, hogy a felkészülés során a tizenegy-tizenkettő éves korosztály neveléséhez-oktatásához szükséges ismereteket sajátítsa el.
+
+(10) Pedagógusképző felsőoktatási intézmény hallgatójának óvodai, iskolai gyakorlati képzésének vezetésére vagy pedagógusok továbbképzésére vezető tanári (gyakorlatvezető óvónői, tanítói), továbbá szaktanácsadói megbízást az kaphat, akinek pedagógus-munkakör betöltéséhez szükséges felsőfokú iskolai végzettsége és szakképzettsége, továbbá pedagógus-szakvizsgája, valamint a nevelő-oktató munkában eltöltött legalább ötéves szakmai gyakorlata van.
+
+(11) A nem felsőoktatási intézmény által fenntartott óvodában vagy iskolában a pedagógusképzést folytató felsőoktatási intézmény hallgatójának óvodai gyakorlati foglalkozásával, pedagógiai gyakorlatával kapcsolatos feladatok ellátásában, továbbá a pedagógusok továbbképzésében a vezető tanár (gyakorlatvezető óvónő, tanító) részt vehet
+
+a) a felsőoktatási intézmény és a nevelési-oktatási intézmény megállapodása;
+
+b) a felsőoktatási intézménnyel kötött megállapodás;
+
+c) a nevelési-oktatási intézmény fenntartójával kötött megállapodás
+
+alapján.
+
+(12) A szaktanácsadói feladatok ellátásában a megbízóval kötött megállapodás alapján lehet részt venni.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/sni.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/sni.txt
new file mode 100644
index 00000000..cf13a8a3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/sni.txt
@@ -0,0 +1,265 @@
+====== Sajátos nevelési igény ======
+
+pontosabban //különleges oktatási-nevelési szükséglet//
+
+>> 1993. évi LXXIX. törvény a közoktatásról - Értelmező rendelkezések
+>> **121. §** (1)
+>> 29. sajátos nevelési igényű gyermek, tanuló: az a gyermek, tanuló, aki a szakértői és rehabilitációs bizottság szakvéleménye alapján
+>> a) testi, érzékszervi, értelmi, beszédfogyatékos, autista, több fogyatékosság együttes előfordulása esetén halmozottan fogyatékos, a megismerő funkciók vagy a viselkedés fejlődésének organikus okra visszavezethető tartós és súlyos rendellenességével küzd,
+>> b) a megismerő funkciók vagy a viselkedés fejlődésének organikus okra vissza nem vezethető tartós és súlyos rendellenességével küzd;
+
+Tehát a törvény két kategóriát különböztet meg. Az elsőt nevezhetjük **fogyatékos**nak, vagy fogyatékkal élőnek, míg a második a **pszichés/kognitív zavar**ral küzdő.
+
+===== SNI főcsoportok =====
+
+Az SNI ma Magyarországon a vegyes szakterminológia, a jogi szabályozás, a finanszírozási modell és a statisztikai célú felhasználás hibrid fogalomegyüttese.
+
+A magyar jogi szövegekben az SNI meghatározásában mindenekelőtt az ellátás és finanszírozás, nem pedig a szakmai szempontok domináltak (és dominálnak), jóllehet magyarra átültetésében a gyógypedagógia hazai terminológiája a volt a főként meghatározó. A sérülés, fogyatékosság, zavar, nehézség és számos más kifejezés az angol szakterminológia (az angolszász hagyományokban igen erős neuropszichológia jól definiált szakkifejezései) tükörfordításából, sokszor félreértelmezéséből egy sajátos szakmai fogalomzavar alakult ki.
+
+A magyar törvényi szabályozás és ennek következményeként (bár a gyakorlat tapasztalatait tekintve inkább előzményeként) az ellátás jellegzetesen hibrid, esetenként szakmailag pontatlan kategóriákat használ. Megtölti tehát az SNI egyes alcsoportjait a diagnosztika korszerű és elavult címkéinek sora, miközben a kategóriái részben követik (vagy követni szeretnék) az OECD finanszírozási modelljeit. Mindezek alapján elmondható tehát, hogy az SNI nem szakmai, hanem finanszírozási kategória, azaz az SNI-be való bekerülés ( a konkrét diagnosztikai kategória szerint megnevezve) fenntartói és nem hátránycsökkentési érdek
+
+A gyakran félreértett SNI besorolások tehát nem szakmai (diagnosztikai, fejlesztési) szempontokat tükröznek elsősorban, hanem statisztikai összemérhetőséget. Az SNI miatt kiemelten támogatott diákokról készült statisztikák tehát az oktatáspolitika informálását és nem az érintettek szakmai ellátásának rendszerét szolgálják első helyen. A magyarországi SNI adatok azonban más célokra is felhasználásra kerülnek, a statisztikai kategóriák pedig az atipikus fejlődés és a fejlődésben akadályozott gyerekek diagnosztikai elnevezéseivel telnek meg.
+
+A hazai SNI-szabályozásba jelenleg nem fér bele a beteg gyerekek különleges oktatáshoz való jogának kérdése (Finnországban ez SNI-kategória). Ez igen kritikus olyan estekben, amikor a gyermek tartósan kórházban (pl. leukémia), vagy gyerekközösségtől elszakadva (közösségben nem oktathatónak minősített), otthon van.
+A jelenlegi törvényben tehát a tartósan beteg gyerekek különleges oktatáshoz való joga alig érvényesül.
+
+A fentiek tükrében a lehetetlen vállalkozásba fogunk: SNI kategóriákat próbálunk kialakítani:
+
+ - Fogyatékosság, akadályozottság
+ - tanulási akadályozottság
+ - **enyhe mértékű értelmi fogyatékosság** (BNO: F70)
+ - értelmi akadályozottság
+ - **közepes (középsúlyos) értelmi fogyatékosság** (BNO: F71)
+ - súlyos értelmi fogyatékosság (BNO: F72)
+ - mélyen súlyos értelmi fogyatékosság (BNO: F73)
+ - **autizmus**1;1D (BNO: F84.0 , F84.1, F84.5, F84.9)
+ - **mozgáskorlátozottság**
+ - **hallássérült**
+ - **látássérült**
+ - **beszédfogyatékos**
+ - több fogyatékosság együttes előfordulása esetén **halmozottan fogyatékos**
+ - Pszichés/Kognitív fejlődés zavara
+ - a beszéd és a nyelv specifikus fejlődési zavarai (BNO: F80)
+ - részképesség zavarok
+ - **diszlexia** (BNO: F81.0)
+ - **diszgráfia** (BNO: F81.1)
+ - **diszkalkulia** (BNO: F81.2)
+ - **iskolai készségek kevert zavara** (BNO: F81.3)
+ - az iskolai képességek nem meghatározott fejlődési zavara (BNO: F81.9)
+ - **tanulási nehézség**
+ - **tanulási zavar**
+ - **kevert specifikus fejlődési zavarok** (BNO: F83)
+ - motoros funkció specifikus fejlődési zavarai, dyspraxia ("ügyetlen gyerek") (BNO: F82)
+ - egyéb zavarok
+ - **elektív mutizmus** (BNO: F94.0)
+ - egyéb pszichológiai fejlődési zavar, agnózia (BNO: F88)
+ - nem meghatározott pszichológiai fejlődési zavar (BNO: F89)
+ - aktivitás szabályozás és figyelem zavar / figyelemhiányos és diszruptív viselkedési zavar
+ - **hiperaktivitás**, ADHD (BNO: F90)
+ - **magatartászavar**, viselkedészavar (BNO: F91)
+ - **Tartósan beteg**
+
+(BNO: Betegségek nemzetközi osztályozása - magyar fordítás 1996.)
+
+==== OECD kategóriák ====
+
+Az OECD (Organisation for Economic Co-operation and Development) az egyes országok SNI gyakorlatát elemezve olyan négy nagy ellátási, a közoktatás számára egyben igencsak eltérő feladatot jelentő, kategóriát sorol fel, amelyek országonként tovább differenciálódnak, azaz a használt kategóriák száma általában 1 és 14 között változik. A legalább 4 kategóriát használó országok főbb kategóriacsoportjai
+
+1) Fizikai képességek zavara
+
+2.) Érzékszervi zavarok, károsodások
+
+3.) Súlyos tanulási zavarok
+
+4.) Az érzelemszabályozás zavarai
+
+==== OECD statisztikai célú kategóriák ====
+
+Az OECD statisztikai célú (az egyes országokban a finanszírozás kereteinek súlyozásához használt) kategóriái:
+
+OECD-A : súlyos képességzavarok (disabilities – a magyar kategória erre a fogyatékosságot használja, ezzel kívánva jelezni a tipikus fejlődéstől való súlyos eltérés organikus eredetét, ennek finanszírozsáa körül nincs a jogalkotók részéről nézetkülönbség)
+
+OECD-B: nehézségek (difficulties – a magyarban nehézség kifejezés szerepel, azaz olyab súlyos fejlődési eltérések, amelyeknek megjelenését ismert szervi vagy környezeti ártalmak nem valószínűsítik).
+
+OECD-C: hátrányok (disadvantages – a magyarban a hátrányos helyzet szerepel, amely általában a szociális és kulturális hátrányokra szűkíti a fogalmat, ennél azonban tágabb a kategória)
+
+Az OECD finanszírozási modellek az utóbbi években egy negyedik kategória bevezetését szorgalmazzák (OECD-D), ez pedig a tehetséggondozás, a kiemelkedő tehetségek emelt finanszírozásának és oktatási feltételeinek megteremtése (Németországban a Bajor Szövetségi Állam a közelmúltban vezette be ezt a rendszert). Magyarországon a finanszírozási modellnek ez a fajta bővítése eddig nem került napirendre.
+
+**Az OECD statisztikai kategóriái finanszírozási modellek kialakítását szolgálják, éppen ezért nem diagnosztikai kategóriák.**
+----
+
+===== Törvényi szbályozók =====
+
+ * Közoktatási törvény (1993. évi LXXIX.törvény a közoktatásról)
+ * 11/1994. (VI.8.) MKM rendelet a nevelési-oktatási intézmények működéséről
+ * 14/1994. (VI.24.) MKM rendelet a képzési kötelezettségről és a pedagógiai szakszolgálatokról
+ * 100/1997. (VI.13.) Korm. rendelet az érettségi vizsga vizsgaszabályzatának kiadásáról
+ * 20/2007. (V.21.) SZMM rendelet a szakmai vizsgáztatás általános szabályairól és eljárási rendjéről
+ * 2/2005. (III. 1.) OM rendelet a Sajátos nevelési igényű gyermekek óvodai nevelésének irányelve és a Sajátos nevelési igényű tanulók iskolai oktatásának irányelve kiadásáról
+ * 26 (2001. VII. 27.) OM rendelet a szakmai vizsgáztatás általános szabályairól és eljárási rendjérõl
+ * 29/2002. (V.17.) OM rendelet A fogyatékossággal élõ hallgatók tanulmányainak folytatásához szükséges esélyegyenlõséget biztosító feltételekrõl
+
+[[http://www.szakertoibizottsag4.hu/jogszabalyok.html]]
+
+===== A közoktatási törvény vonatkozó rendelkezései =====
+
+>> 1993. évi LXXIX. törvény a közoktatásról **6. §**
+>> (3) A tankötelezettség annak a tanévnek a végéig tart, amelyben a tanuló tizennyolcadik életévét betölti. A sajátos nevelési igényű tanuló tankötelezettsége meghosszabbítható legfeljebb annak a tanévnek a végéig, amelyben a huszadik életévét betölti.
+>> (4) Az iskola igazgatója dönt
+>>
+>> a) a tankötelezettség kezdetéről az óvoda véleménye alapján, illetőleg ha a gyermek nem járt óvodába, vagy az óvoda kezdeményezi a nevelési tanácsadó véleménye alapján; a sajátos nevelési igényű gyermek esetén a tanulási képességet vizsgáló szakértői és rehabilitációs bizottság vagy az országos szakértői és rehabilitációs tevékenységet végző szakértői és rehabilitációs bizottság szakértői véleménye alapján;
+>>
+>> b) a tankötelezettség meghosszabbításáról a tanulási képességet vizsgáló szakértői és rehabilitációs bizottság vagy az országos szakértői és rehabilitációs tevékenységet végző szakértői és rehabilitációs bizottság szakértői véleménye alapján.
+>>
+>> **8. §** (12) A Nemzeti alaptanterv tartalmazza
+>>
+>> a) a nemzeti és etnikai kisebbségi iskolai nevelés-oktatás,
+>>
+>> b) a sajátos nevelési igényű tanulók iskolai nevelése-oktatása sajátos tantervi követelményeinek alapelveit.
+>> **8/B. §** (3) A sajátos nevelési igényű gyermekek, tanulók nevelését biztosító óvoda, valamint nevelését és oktatását végző iskola a 8. § (2)-(9) bekezdésében és a 8/A. § (1)-(4) bekezdésében foglaltakat azzal az eltéréssel alkalmazza, hogy az óvodai nevelési program, illetve az iskolai helyi tanterv elkészítésénél figyelembe veszi a Sajátos nevelési igényű gyermekek óvodai nevelésének irányelvét, illetve a Sajátos nevelési igényű tanulók iskolai oktatásának tantervi irányelvét is. A Sajátos nevelési igényű gyermekek óvodai nevelésének irányelvében, illetve a Sajátos nevelési igényű tanulók iskolai oktatásának tantervi irányelvében meghatározottak szerint a siket gyermek óvodai nevelése, iskolai nevelése és oktatása jelnyelven is folyhat.
+
+>> **13. §** (5) A szülő joga, hogy gyermeke lakóhelyén, ennek hiányában tartózkodási helyén a polgármester segítségét kérje ahhoz, hogy gyermeke különbözeti vizsga vagy évfolyamismétlés nélkül folytathassa tanulmányait, ha a településen nem működik olyan iskola, amelyik a tankötelezettség végéig biztosítja az iskolai nevelést és oktatást. A sajátos nevelési igényű gyermek lakóhelyén, ennek hiányában tartózkodási helyén a polgármester segítségét kérheti ahhoz, hogy gyermeke óvodai neveléséhez, iskolai neveléséhez-oktatásához szükséges feltételeket a településen megteremtsék.
+
+>> **19. §** (7) A pedagógus alapvető feladata a rábízott gyermekek, tanulók nevelése, tanítása. Ezzel összefüggésben kötelessége különösen, hogy
+>> ...
+>> b) nevelő és oktató tevékenysége során figyelembe vegye a gyermek, tanuló egyéni képességét, tehetségét, fejlődésének ütemét, szociokulturális helyzetét és fejlettségét, sajátos nevelési igényét, segítse a gyermek, tanuló képességének, tehetségének kibontakozását, illetve bármilyen oknál fogva hátrányos helyzetben lévő gyermek, tanuló felzárkózását tanulótársaihoz,
+
+
+>> **30. §** (1) A sajátos nevelési igényű gyermeknek, tanulónak joga, hogy különleges gondozás keretében állapotának megfelelő pedagógiai, gyógypedagógiai, konduktív pedagógiai ellátásban részesüljön attól kezdődően, hogy igényjogosultságát megállapították. A különleges gondozást - a gyermek, tanuló életkorától és állapotától függően, a 35. § (2) bekezdésében meghatározott szakértői és rehabilitációs bizottságok szakértői véleményében foglaltak szerint - a korai fejlesztés és gondozás, az óvodai nevelés, az iskolai nevelés és oktatás, a fejlesztő felkészítés keretében kell biztosítani. A korai fejlesztés és gondozás megvalósítható otthoni ellátás, bölcsődei gondozás, fogyatékosok ápoló, gondozó otthonában nyújtott gondozás, gyermekotthonban nyújtott gondozás, gyógypedagógiai tanácsadás, korai fejlesztés és gondozás keretében biztosított fejlesztés és gondozás, konduktív pedagógiai ellátás keretében.
+>>
+>> (2) A sajátos nevelési igényű gyermek óvodai nevelése, tanuló iskolai nevelése és oktatása, továbbá kollégiumi nevelése az e célra létrehozott gyógypedagógiai nevelési-oktatási intézményben, konduktív pedagógiai intézményben, óvodai csoportban, óvodai tagozaton, iskolai tagozaton, osztályban, csoportban vagy a többi gyermekkel, tanulóval együtt, azonos óvodai csoportban, óvodai tagozaton, illetve iskolai osztályban (a továbbiakban: a sajátos nevelési igényű gyermekek, tanulók - külön vagy közös - nevelésében és oktatásában részt vevő óvoda és iskola, illetve kollégium együtt: gyógypedagógiai nevelésben-oktatásban részt vevő nevelési-oktatási intézmény) történhet. A gyermek külön óvodai nevelését végző óvodai csoportot, óvodai tagozatot, illetve a tanulók külön iskolai nevelését és oktatását végző iskolai tagozatot, osztályt, csoportot - a gyógypedagógiai nevelési-oktatási intézménnyel [20. § (2) bek.] egyezően - a fogyatékosság típusának megfelelően kell létrehozni. A gyógypedagógiai nevelésben-oktatásban részt vevő nevelési-oktatási intézményben a gyermek, tanuló egészségügyi és pedagógiai célú habilitációs és rehabilitációs ellátásban is részesül.
+>>
+>> (3) A gyógypedagógiai nevelésben-oktatásban, a konduktív nevelésben-oktatásban részt vevő nevelési-oktatási intézménynek rendelkeznie kell azokkal a személyi és tárgyi feltételekkel, amelyek a sajátos nevelési igényű gyermek, tanuló egészségügyi és pedagógiai célú habilitációs és rehabilitációs ellátáshoz szükségesek. A nevelési-oktatási intézményt a szülő választja ki a tanulási képességet vizsgáló szakértői és rehabilitációs bizottság, illetve az országos szakértői és rehabilitációs tevékenységet végző bizottság szakértői véleménye alapján.
+>>
+>> (4) A gyermek, tanuló érdekében a jegyző kötelezheti a szülőt, hogy gyermekével jelenjen meg szakértői vizsgálaton, illetve a szakértői vélemény alapján gyermekét a megfelelő nevelési-oktatási intézménybe írassa be [a továbbiakban a (3) bekezdés szerint kiválasztott, illetve a (4) bekezdés szerint a jegyző által kijelölt nevelési-oktatási intézmény: kijelölt nevelési-oktatási intézmény, kijelölt óvoda, kijelölt iskola].
+>>
+>> (5) Ha a gyermeket a kijelölt nevelési-oktatási intézmény nem tudja felvenni, a szakértői véleményt adó intézmény megkísérel másik, a sajátos neveléshez és oktatáshoz szükséges személyi és tárgyi feltételekkel rendelkező nevelési-oktatási intézményt találni. Ha így sem oldható meg a gyermek, a tanuló elhelyezése, a szakértői véleményt adó intézmény meghatározza, hogy a gyermek, a tanuló milyen módon kapcsolódhat be a nevelésbe és az oktatásba, és a gyermeket, a tanulót előjegyzésbe veszi mindaddig, ameddig felvételét nem sikerül megoldani.
+>>
+>> (6) Ha a sajátos nevelési igényű gyermek súlyos és halmozottan fogyatékos, attól az évtől kezdve, amelyben az ötödik életévét betölti, az óvodai nevelési év első napjától kezdődően fejlesztő felkészítésben vesz részt. A fejlesztő felkészítés megvalósítható a fogyatékosok ápoló, gondozó otthonában nyújtott gondozás, a fogyatékosok rehabilitációs intézményében, a fogyatékosok nappali intézményében nyújtott gondozás, a gyógypedagógiai tanácsadás, korai fejlesztés és gondozás keretében biztosított fejlesztés és gondozás, a konduktív pedagógiai ellátás, a gyógypedagógiai nevelésben és oktatásban részt vevő iskolában nyújtott fejlesztés keretében, illetőleg annak a nevelési évnek a végéig, amelyben a gyermek hatodik életévét betölti bölcsődei gondozás keretében. A jegyző a (4) bekezdésben meghatározottak szerint kötelezheti a szülőt, hogy gyermekével jelenjen meg a szakértői vizsgálaton, illetőleg, hogy gyermeke részére a szakértői véleményben meghatározottak szerint biztosítsa a fejlesztő felkészítésben való részvételt.
+>>
+>> (7) Ha a gyermek, a tanuló beilleszkedési, tanulási, magatartási nehézséggel küzd (a továbbiakban együtt: beilleszkedési, tanulási, magatartási nehézséggel küzdő gyermek, tanuló), illetve a megismerő funkciók vagy a viselkedés fejlődésének organikus okra vissza nem vezethető tartós és súlyos rendellenességével küzd, fejlesztő foglalkoztatásra jogosult. A fejlesztő foglalkoztatás a nevelési tanácsadás, az óvodai nevelés, az iskolai nevelés és oktatás, a kollégiumi nevelés és oktatás keretében valósítható meg.
+>>
+>> (8) Abban a kérdésben, hogy a gyermek, tanuló beilleszkedési, tanulási, magatartási nehézséggel küzdő, vagy sajátos nevelési igényű, a nevelési tanácsadó megkeresésére a szakértői és rehabilitációs bizottság dönt.
+>>
+>> (9) A sajátos nevelési igényű tanulót, illetve a beilleszkedési, tanulási, magatartási nehézséggel küzdő tanulót - jogszabályban meghatározott munkamegosztás szerint - a szakértői és rehabilitációs bizottság vagy a nevelési tanácsadó szakértői véleménye alapján - a gyakorlati képzés kivételével - az igazgató mentesíti egyes tantárgyakból, tantárgyrészekből az értékelés és a minősítés alól. Ha a tanulót egyes tantárgyakból, tantárgyrészekből mentesítik az értékelés és minősítés alól, az iskola - az e törvény 52. §-ának (7) bekezdésében, valamint (11) bekezdésének c) pontjában meghatározott időkeret terhére - egyéni foglalkozást szervez részére. Az egyéni foglalkozás keretében - egyéni fejlesztési terv alapján - segíti a tanuló felzárkóztatását a többiekhez. Az érettségi vizsgán az érintett tantárgyak helyett a tanuló - a vizsgaszabályzatban meghatározottak szerint - másik tantárgyat választhat. A tanuló részére a felvételi vizsgán, az osztályozó vizsgán, a modulzáró vizsgán, a szintvizsgán, a különbözeti vizsgán, a javítóvizsgán, az érettségi vizsgán, a szakmai vizsgán biztosítani kell a hosszabb felkészülési időt, az írásbeli beszámolón lehetővé kell tenni az iskolai tanulmányok során alkalmazott segédeszköz (írógép, számítógép stb.) alkalmazását, szükség esetén az írásbeli beszámoló szóbeli beszámolóval vagy a szóbeli beszámoló írásbeli beszámolóval történő felváltását.
+>>
+>> (10) A korai fejlesztés és gondozás, továbbá a fejlesztő felkészítés feladatait pedagógus-munkakörben gyógypedagógus (terapeuta) konduktor vagy gyógypedagógus (terapeuta), illetve konduktor irányításával, szükség esetén közreműködésével szociálpedagógus, óvodapedagógus, tanító, tanár; nem pedagógus-munkakörben gyógypedagógus (terapeuta) vagy konduktor irányításával szociális munkás, gyógytornász, ápoló, gyermekfelügyelő, pedagógiai asszisztens, gyógypedagógiai asszisztens, bölcsődei gondozó láthatja el.
+>>
+>> (11) A gyógypedagógiai nevelésben-oktatásban részt vevő nevelési-oktatási intézményben a pedagógus-munkakör betöltéséhez szükséges felsőfokú iskolai végzettségek és szakképzettségek a következők:
+>>
+>> a) ha az óvodai foglalkozás, a tanórai foglalkozás elsődleges célja a sajátos nevelési igényből eredő hátrány csökkentése, továbbá az egészségügyi és pedagógiai célú habilitációs, rehabilitációs óvodai foglalkozásokhoz, tanórai foglalkozásokhoz; valamint, ha az értelmi fogyatékos tanuló iskolai nevelése, oktatása külön - az e célra létrehozott gyógypedagógiai nevelési-oktatási intézményben, óvodai csoportban, óvodai tagozaton, iskolai tagozaton, osztályban, csoportban - történik, a fogyatékosság típusának megfelelő gyógypedagógiai tanári, konduktori, konduktor-tanítói, terapeuta szakképzettség,
+>>
+>> b) ha az óvodai foglalkozás, a tanórai foglalkozás elsődlegesen nem a sajátos nevelési igényből eredő hátrány csökkentését, a tanuló egészségügyi és pedagógiai célú habilitációját, rehabilitációját szolgálja, továbbá a tanórán kívüli foglalkozáshoz, a kollégiumi foglalkozáshoz az a) pontban meghatározott vagy a 17. § (1) bekezdésében meghatározott végzettség és szakképzettség.
+>>
+>> (12) Ha a (11) bekezdés b) pontja alapján a pedagógus-munkakört a 17. § (1) bekezdésében meghatározott végzettséggel és szakképzettséggel rendelkezővel töltik be, biztosítani kell, hogy a fogyatékosság típusának megfelelő végzettséggel és szakképzettséggel rendelkező gyógypedagógus (terapeuta) vagy konduktor segítse a többi pedagógus munkáját.
+>>
+>> (13) A gyógypedagógiai nevelésben-oktatásban részt vevő nevelési-oktatási intézményben - az e törvény 18. § (1) bekezdésének a) pontjában a középiskolákra vonatkozó rendelkezések megtartásával - intézményi vezetői megbízást kaphat az is, aki a fogyatékosság típusának megfelelő gyógypedagógiai tanári, konduktori, konduktor-tanítói, terapeuta felsőfokú iskolai végzettséggel és szakképzettséggel rendelkezik.
+>>
+>> **30/A.** § (1) A súlyos és halmozottan fogyatékos gyermek annak a tanítási évnek az első napjától, amelyben a hatodik életévét betölti, a fejlesztő felkészítés keretei között a tankötelezettségét teljesíti (a továbbiakban: fejlesztő iskolai oktatás). A fejlesztő iskolai oktatás az e törvény 30. §-ának (6) bekezdésében meghatározott intézményekben szervezhető meg (a továbbiakban: fejlesztő iskolai oktatás). A fejlesztő iskolai oktatást a tanév rendjéhez igazodóan kell megszervezni. A fejlesztő iskolai oktatást a Súlyos és halmozottan fogyatékos tanulók fejlesztő oktatása irányelvének alkalmazásával kell megszervezni, oly módon, hogy a heti fejlesztő foglalkozások száma elérje a húsz órát. Megszervezésekor az e törvény 6. §-ában, 8-9. §-ában, 25-29. §-ában, 31. §-ában, 46. §-ában, 48. §-ában, 50. §-ában, 52-53. §-ában, 66-67. §-ában, 69-73. §-ában, 78. §-ában foglaltakat nem lehet alkalmazni. A fejlesztő iskolai oktatásban rehabilitációs pedagógiai programot és annak alapján egyéni fejlesztési terveket készítenek. A rehabilitációs pedagógiai program bevezetésére a pedagógiai program elfogadására és jóváhagyására vonatkozó rendelkezéseket kell alkalmazni.
+>>
+>> (2) A fejlesztő iskolai oktatásban a tanuló annak a tanítási évnek az utolsó napjáig köteles részt venni, amelyben betölti a tizennyolcadik életévét. A fejlesztő iskolai oktatásban a tanuló annak a tanévnek a végéig vehet részt, amelyben betölti a huszonharmadik életévét. A fejlesztő iskolai oktatásban a tanulókat a fogyatékosságuk, fejlettségük és életkoruk alapján osztják be fejlesztő csoportokba.
+>>
+>> (3) Ha a tanuló - a szakértői és rehabilitációs bizottság szakvéleményében foglaltak szerint - nem tud részt venni a fejlesztő iskolai oktatásban, a tankötelezettségét egyéni fejlesztő felkészítés keretében teljesíti. Az egyéni fejlesztő felkészítés megszervezhető otthoni ellátás keretében, illetve a fogyatékosok ápoló, gondozó otthonában, a fogyatékosok rehabilitációs intézményében, a fogyatékosok nappali intézményében, a gyógypedagógiai tanácsadó korai fejlesztő gondozó központban, illetve a konduktív pedagógiai intézményben.
+
+>> **50. §** A sajátos nevelési igényű gyermekek, tanulók
+>> ...
+>> b) iskolai nevelése és oktatása esetén a helyi tanterv tartalmazza a fogyatékosság típusához és fokához igazodó fejlesztő programot is. A helyi tanterv, a szakmai program az egyes évfolyamok követelményeinek teljesítéséhez egy tanítási évnél hosszabb időt is megjelölhet.
+
+>> **52. §** ... Nappali rendszerű iskolai oktatásban a tanuló abban az évben kezdhet utoljára tanévet, amelyben betölti
+>>
+>> a) nyolc évfolyamos általános iskola esetén a tizenhatodik,
+>>
+>> b)
+>>
+>> c) középiskola és szakiskola esetén a huszonkettedik
+>>
+>> életévét. ... A sajátos nevelési igényű tanuló esetén, valamint a súlyos beilleszkedési, tanulási, magatartási nehézséggel küzdő tanuló esetén, továbbá, ha a tanulmányi követelményeket azért nem tudták teljesíteni, mert a tanuló tartós gyógykezelés alatt állt, az a)-c) pontban meghatározott életkorhoz három évet hozzá kell számítani.
+>> ...
+>> (6) A gyógypedagógiai nevelésben-oktatásban részt vevő nevelési-oktatási intézményben a sajátos nevelési igényű tanulók részére a (3) bekezdésben meghatározott tanórai foglalkozásokon túl kötelező egészségügyi és pedagógiai célú habilitációs, rehabilitációs tanórai foglalkozásokat kell szervezni. A tanuló annyi egészségügyi és pedagógiai célú habilitációs, rehabilitációs tanórai foglalkozáson vesz részt, amennyi a sajátos nevelési igényéből eredő hátránya csökkentéséhez szükséges. A kötelező egészségügyi és pedagógiai célú habilitációs, rehabilitációs tanórai foglalkozások megszervezésének heti időkerete a (3) bekezdésben az évfolyamra meghatározott heti tanítási óra
+>>
+>> a) tizenöt százaléka értelmi fogyatékos tanuló,
+>>
+>> b) tizenöt százaléka - az autista kivételével - többi fel nem sorolt fogyatékos tanuló,
+>>
+>> c) harmincöt százaléka a gyengénlátó tanuló,
+>>
+>> d) negyven százaléka a mozgásfogyatékos, a vak, a nagyothalló, a beszédfogyatékos tanuló,
+>>
+>> e) ötven százaléka a siket és az autista tanuló
+>>
+>> esetén. A heti időkeretet abban az esetben, ha a tanulót külön osztályban tanítják, osztályonként kell megállapítani. Ha a tanulót a többi, nem fogyatékos tanulóval közösen - egy osztályban tanítják -, a heti órakeretet nyolc fős csoportokra kell meghatározni oly módon, hogy az azonos ellátásra jogosult tanulók számát elosztják nyolccal. A csoportra jutó időkeret akkor is felhasználható, ha az osztás alapján a csoportban nincs nyolc tanuló. Ennél a számításnál a tanulói létszámot a tényleges létszám alapján kell számításba venni. Ha az iskolában az osztályt több különböző évfolyamra járó tanulóból szervezik meg (a továbbiakban: összevont osztály), és az egyes évfolyamokra a (3) bekezdés eltérő mértékű heti kötelező tanórai foglalkozást állapít meg, a habilitációs, rehabilitációs tanórai foglalkozás heti időkeretét a magasabb évfolyamra megállapított heti kötelező tanórai foglalkozás mértéke alapján kell meghatározni. A heti időkeret az egyes évfolyamok, osztályok, tanítási év közben a tanítási hetek között átcsoportosítható. A középsúlyos értelmi fogyatékos tanuló részére az iskola a nevelési-oktatási feladatokat egészségügyi és pedagógiai habilitációs, rehabilitációs célú tanórai foglalkozás keretében szervezi meg a (3) bekezdésben és e bekezdés a) pontjában meghatározott időkeretben [a továbbiakban a (3)-(6) bekezdés alatti foglalkozások: kötelező tanórai foglalkozások].
+
+>> **58. §** (1) Szakmai munkaközösség hozható létre a gyermek- és ifjúságvédelmi feladatok, a szabadidő hasznos eltöltésével összefüggő feladatok, a sajátos nevelési igényű és a halmozottan hátrányos helyzetű tanulók integrációját szolgáló feladatok segítéséhez is.
+
+>> **66. §** (5) ... A halmozottan hátrányos helyzetű tanulók felvételi, átvételi kérelmének teljesítése után sorsolás nélkül is felvehető a sajátos nevelési igényű tanuló, továbbá az a tanuló, akinek ezt sajátos helyzete indokolja. A sajátos helyzetet a helyi önkormányzat rendeletben állapítja meg.
+
+>> **69. §** (2) Az igazgató - a gyakorlati képzés kivételével - a tanulót kérelmére - részben vagy egészben - felmentheti az iskolai kötelező tanórai foglalkozásokon való részvétel alól, ha a tanuló egyéni adottságai, sajátos nevelési igénye, továbbá sajátos helyzete ezt indokolttá teszi. Az igazgató a tanulót kérelmére mentesítheti a készségtárgyak tanulása alól, ha azt egyéni adottsága vagy sajátos helyzete indokolttá teszi.
+
+>> **78. §** (2) Az iskolai tanulmányok attól az évtől kezdődően, amelyben a tanuló
+>>
+>> a) nyolc évfolyamos általános iskola esetén tizenhetedik,
+>>
+>> c) középiskola és szakiskola esetén huszonharmadik
+>>
+>> életévét betölti, kizárólag felnőttoktatás keretében folytatható. A c) pontban meghatározott határidő egy évvel meghosszabbítható abban az esetben, ha a tanuló az általános iskola első évfolyamán a tanulmányait a hetedik életévében kezdte meg, továbbá, ha olyan szakképzésben vesz részt, amelyben a szakképzési évfolyamok száma meghaladja a kettőt. Sajátos nevelési igényű tanuló esetén, valamint a súlyos beilleszkedési zavarral, tanulási nehézséggel, magatartási rendellenességgel küzdő tanuló esetén, továbbá, ha a tanulmányi követelményeket azért nem tudták teljesíteni, mert a tanuló tartós gyógykezelés alatt állt, az a)-c) pontban meghatározott életkorhoz három évet hozzá kell számítani.
+
+>> **91. §** (1) A főjegyző
+>> ...
+>> e) tájékoztatja az illetékes szakértői és rehabilitációs bizottságot arról, hogy melyik az az - e törvény 30. §-ának (1)-(2) bekezdésében felsorolt - intézmény, amelyik rendelkezik a sajátos nevelési igényű gyermek, tanuló különleges gondozásának ellátásához szükséges feltételekkel;
+
+>> **120. §** (1) Ha a sajátos nevelési igényű tanuló, illetve a beilleszkedési, tanulási nehézséggel, magatartási rendellenességgel küzdő tanuló szakértői vélemény alapján
+>>
+>> - tanulmányait magántanulóként folytatja, illetve
+>>
+>> - a szülő otthoni ellátás keretében tesz eleget a fejlesztő felkészítésben való részvételi kötelezettségének,
+>>
+>> az önkormányzati feladatellátás keretében, a szakértői véleményben megjelölt szakember biztosításáról - külön jogszabályban meghatározottak szerint - az iskolának, a fejlesztő felkészítést nyújtó, illetve a szakértői véleményt készítő intézménynek kell gondoskodnia.
+>>
+>> (2) Meg kell téríteni
+>>
+>> a) a korai fejlesztést és gondozást nyújtó, a sajátos nevelési igényű gyermekek nevelését és oktatását végző, valamint a fejlesztő felkészítést biztosító intézmény eléréséhez szükséges helyközi utazás költségeit, a gyermeknek, tanulónak és kísérőjének, továbbá
+>>
+>> b) az a) pontban felsorolt gyermek, tanuló szülője részére szervezett gondozói tanfolyam költségét;
+
+>> 1993. évi LXXIX. törvény a közoktatásról - Értelmező rendelkezések
+>> **121. §** (1)
+>> ...
+>> 28. sajátos nevelési igényű neveléshez és oktatáshoz szükséges feltételek: a gyermek, tanuló külön óvodai neveléséhez, illetve iskolai neveléséhez és oktatásához, a sajátos nevelési igény típusának és súlyosságának megfelelő gyógypedagógus, konduktor foglalkoztatása, a neveléshez és oktatáshoz szükséges speciális tanterv, tankönyv és más segédletek; magánoktatáshoz, integrált óvodai neveléshez, iskolai neveléshez és oktatáshoz, a fejlesztő felkészítéshez, az illetékes szakértői bizottság által meghatározottak szerinti foglalkozáshoz szükséges szakirányú végzettségű gyógypedagógus foglalkoztatása; a foglalkozásokhoz szükséges speciális tanterv, tankönyv, valamint speciális gyógyászati és technikai eszközök; a gyermek, tanuló részére a szakértői és rehabilitációs bizottság által meghatározott szakmai szolgáltatások biztosítása;
+>> ...
+>> (9) Ha jogszabály az óvodai nevelésben részt vevő, a tanulói jogviszonyban, kollégiumi tagsági viszonyban álló vagy a képzési kötelezettséget teljesítő fogyatékos gyermek részére kedvezményt, juttatást, jogosultságot, kötelezettséget állapít meg, a fogyatékos gyermek, tanuló fogalom alatt a sajátos nevelési igényű gyermeket, tanulót kell érteni.
+
+>> 1. számú melléklet az 1993. évi LXXIX. t
+>> 6. A technikai létszámhoz egy létszámot indokolt hozzá számítani, ha a nevelési-oktatási intézményben a gyermekek, tanulók legalább húsz százaléka hátrányos helyzetű, vagy beilleszkedési, tanulási nehézséggel, magatartási rendellenességgel küzd, illetve, ha a sajátos nevelési igényű gyermekeket, tanulókat a többiekkel egy csoportban, osztályban nevelik, tanítják. A különböző csoportba tartozó gyermekek, tanulók létszámát együttesen is figyelembe lehet venni a húsz százalék megállapításához. A technikai létszámhoz tagintézményenként további egy-egy létszámot indokolt hozzá számítani.
+
+>> 2. számú melléklet az 1993. évi LXXIX. törvényhez / A gyermekek, tanulók adatai
+>> 1. E törvény alapján nyilvántartott adatok:
+>> d) a tanulói jogviszonnyal kapcsolatos adatok
+>> ...
+>> - a sajátos nevelési igényre vonatkozó adatok,
+>>
+>> 2. Az adatok - az e törvényben meghatározott célból, a személyes adatok védelmére vonatkozó célhoz kötöttség megtartásával - továbbíthatók
+>> - sajátos nevelési igényre, a beilleszkedési zavarra, tanulási nehézségre, magatartási rendellenességre vonatkozó adatok a pedagógiai szakszolgálat intézményeitől a nevelési-oktatási intézménynek, illetve vissza,
+
+>> 3. számú melléklet az 1993. évi LXXIX. törvényhez
+>> Az osztályok, csoportok szervezése
+>> 3. Azt a gyermeket, tanulót, aki beszédfogyatékos, enyhe értelmi fogyatékos, a megismerő funkciók vagy a viselkedés fejlődésének tartós és súlyos rendellenessége miatt sajátos nevelési igényű vagy beilleszkedési, tanulási, magatartási nehézséggel küzd, az óvodai csoport, iskolai osztály, kollégiumi csoport létszámának számításánál kettő, azt a gyermeket, tanulót pedig, aki testi, érzékszervi, középsúlyos értelmi fogyatékos, autista, halmozottan fogyatékos három gyermekként, tanulóként kell számításba venni, függetlenül attól, hogy a többi gyermekkel, tanulóval együtt vagy külön vesz részt óvodai nevelésben, iskolai nevelésben és oktatásban, kollégiumi nevelésben és oktatásban. Két tanulóként kell számításba venni a felzárkóztató oktatásban részt vevő tanulót. Az e pontban foglaltak az alapfokú művészetoktatásban nem alkalmazhatók.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanitasi_nap.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanitasi_nap.txt
new file mode 100644
index 00000000..e7ab8c11
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanitasi_nap.txt
@@ -0,0 +1,9 @@
+===== Tanítási nap =====
+1993. évi LXXIX. törvény a közoktatásról
+Értelmező rendelkezések
+
+121. § (1) E törvény alkalmazásában
+
+39. tanítási nap: az egyes osztályokban a tanítási órák, illetőleg az e törvény 53. § (2) bekezdésének e) pontjában meghatározott foglalkozások megtartására fordított nap, amennyiben a foglalkozási órák száma eléri a hármat;
+
+53. § (2) e) az iskola pedagógiai programjában rögzített, a tanítási órák keretében meg nem valósítható osztály- vagy csoportfoglalkozás, így különösen a tanulmányi kirándulás, környezeti nevelés, a kulturális, illetőleg sportrendezvény.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanuloi_jogviszony.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanuloi_jogviszony.txt
new file mode 100644
index 00000000..64ba4e63
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/tanuloi_jogviszony.txt
@@ -0,0 +1,171 @@
+
+
+====== Magántanulói státuszra vonatkozó jogszabályok ======
+
+KT. 7. § (1) A tankötelezettség - a szülő választása alapján - iskolába járással vagy magántanulóként teljesíthető.
+
+52. § (13) Az e törvény 120. §-ának (1) bekezdése alapján, vagy súlyos betegsége miatt magántanulóként tanulmányokat folytatók egyéni foglalkozás keretében történő felkészítésére az iskolának tanulónként a kötelező és a nem kötelező tanórai foglalkozás megszervezésére rendelkezésre álló órakereten felül - átlag - heti tíz óra áll a rendelkezésre. Az időkeret az egyes hetek és tanulók között átcsoportosítható.
+
+69. §\\
+(2) Az igazgató - a gyakorlati képzés kivételével - a tanulót kérelmére - részben vagy egészben - felmentheti az iskolai kötelező tanórai foglalkozásokon való részvétel alól, ha a tanuló egyéni adottságai, sajátos nevelési igénye, továbbá sajátos helyzete ezt indokolttá teszi. Az igazgató a tanulót kérelmére mentesítheti a készségtárgyak tanulása alól, ha azt egyéni adottsága vagy sajátos helyzete indokolttá teszi.\\
+(3) A magántanulót az iskola valamennyi kötelező tanórai foglalkozása alól fel kell menteni. \\
+(4) Az, akit felmentettek a kötelező tanórai foglalkozásokon való részvétel alól, az igazgató által meghatározott időben, és a nevelőtestület által meghatározott módon, ad számot tudásáról.\\
+
+=== 1. számú melléklet az 1993. évi LXXIX. törvényhez ===
+b) a nappali rendszerű iskolai oktatásban azt a tanulót lehet egy tanulóként figyelembe venni, aki az iskolával tanulói jogviszonyban áll; azoknak a tanulóknak a létszámát, akik saját döntésük alapján magántanulók, vagy saját döntésük alapján vendégtanulók - kivéve, ha e törvény alapján közösen szervezik meg több iskola részére a nyelvi előkészítő osztályt - a normatív állami hozzájárulás meghatározásakor nem lehet figyelembe venni;
+
+==== 11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről ====
+
+21. § (5) A magántanulónak a magatartását és szorgalmát nem kell minősíteni.
+
+23. § (1) Ha a tanuló - szülőjének a közoktatási törvény 7. §-a (2) bekezdésében szabályozott választása alapján - tankötelezettségének magántanulóként tesz eleget, az erről való bejelentést követő három napon belül az iskola igazgatója beszerzi a tanuló lakóhelye, ennek hiányában tartózkodási helye szerint illetékes gyermekjóléti szolgálat véleményét, annak eldöntésére, hátrányos-e ez a megoldás a tanulónak. A gyermekjóléti szolgálat tizenöt napon belül köteles megküldeni véleményét.
+
+(2) Ha a tanuló tanulmányi kötelezettségének a szülő döntése alapján magántanulóként tesz eleget, felkészítéséről a szülő gondoskodik, illetőleg a tanuló egyénileg készül fel. Az az iskola pedig, amellyel a tanuló tanulói jogviszonyban áll - kivéve, ha a tanuló független vizsgabizottság előtt ad számot tudásáról - állapítja meg a tanuló érdemjegyeit és osztályzatait, továbbá dönt - minden esetben - a tanuló magasabb évfolyamra lépésével kapcsolatos kérdésekben. Az iskola igazgatója köteles tájékoztatni a tanulót, illetve a szülőt a magántanulói jogairól és kötelességeiről. A magántanuló kérelemre felvehető a napközibe és a tanulószobai foglalkozásra.
+
+(3) Ha a sajátos nevelési igényű tanuló az illetékes szakértői és rehabilitációs bizottság, a beilleszkedési, magatartási, tanulási nehézséggel küzdő tanuló a nevelési tanácsadó szakértői véleménye alapján tanulmányait magántanulóként folytatja, iskolai neveléséről és oktatásáról - felkészítéséről, érdemjegyeinek és osztályzatainak megállapításáról, illetve az ehhez szükséges pedagógusokról - a szakértői véleményben foglaltak szerint - az az iskola gondoskodik, amellyel a tanuló tanulói jogviszonyban áll. A közoktatási törvény 120. §-ának (1) bekezdésében meghatározottak alapján az iskolában nem foglalkoztatott szakemberek biztosításáról
+
+a) a beilleszkedési, tanulási nehézséggel, magatartási rendellenességgel küzdő tanuló esetén a szakvéleményt kiállító nevelési tanácsadó;
+
+b) sajátos nevelési igényű tanuló esetén a fővárosi, megyei utazó szakember hálózat költségvetése terhére kell gondoskodni.
+
+(4) Az iskola köteles gondoskodni a tanuló felkészítéséről, érdemjegyeinek és osztályzatának megállapításáról akkor is, ha a szakorvosi vélemény alapján otthoni ellátás keretében részesül tartós gyógykezelésben, és emiatt magántanulóként folytatja tanulmányait.
+
+=== Záradék ===
+
+6. Tanulmányait a szülő kérésére (szakértői vélemény alapján) magántanulóként folytatja. N., TI.
+
+====== Vendégtanuló ======
+
+==== 11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről ====
+
+19. § (1) A tanuló kérelmére engedélyezhető, hogy az iskolában oktatottaktól eltérő irányú ismeretek megszerzése, illetőleg nyelvtanulás céljából másik iskolában elméleti tanítási órákon, illetőleg gyakorlati foglalkozáson vegyen részt. Ha az iskola nem vesz részt kisebbségi oktatásban, a tanuló, kiskorú tanuló esetén a szülő, attól az évtől kezdődően, amelyben a tanuló a tizenegyedik életévét elérte, a szülő és a tanuló közös kérelmére engedélyezni kell, hogy a tanuló a közoktatási törvény 86. §-ának (5) bekezdésében meghatározott kiegészítő kisebbségi oktatásban vegyen részt.
+
+(2) Ha a tanuló tartós gyógykezelése az iskolába járást nem teszi lehetővé, tanulmányait - tanulói jogviszonyának fenntartása mellett - egészségügyi intézményben vagy a gyógykezelést is biztosító nevelési-oktatási intézményben folytathatja.
+
+(3) Az alapfokú művészetoktatási intézmény tanulója az előírt követelményt - az iskolák közötti megállapodás alapján - a másik alapfokú művészetoktatási intézményben is elsajátíthatja [az (1)-(3) bekezdésben meghatározott tanulmányokat folytató tanuló, a továbbiakban: vendégtanuló].
+
+24. § (4) Ha a tanuló független vizsgabizottság előtt vagy vendégtanulóként ad számot tudásáról, a vizsgabizottság, illetőleg a vizsgáztató iskola törzslapi bejegyzés céljából értesíti azt az iskolát, amelyikkel a tanuló tanulói jogviszonyban áll. A tanuló magasabb évfolyamra lépéséről - figyelembe véve a független vizsgabizottság által adott, illetve a vendégtanulóként szerzett osztályzatot - az az iskola dönt, amellyel a tanuló tanulói jogviszonyban áll.
+
+==== 1993. évi LXXIX. törvény a közoktatásról ====
+
+11. § (1) A tanuló joga különösen, hogy
+
+j) jogszabályban meghatározottak szerint vendégtanulói jogviszonyt létesítsen;
+
+==== 100/1997. (VI. 13.) Korm. rendelet az érettségi vizsga vizsgaszabályzatának kiadásáról ====
+
+4. § (4) A középiskolák az emelt szintű érettségi vizsgára történő felkészítés feladatait egymás közötti megállapodás alapján közösen is megoldhatják.
+
+12. § (4) Érettségi vizsgára lehet jelentkezni
+
+a) tanulói jogviszony, vendégtanulói jogviszony fennállása alatt, az érettségi bizonyítvány megszerzése előtt abban a középiskolában, amellyel a tanulói, vendégtanulói jogviszony fennáll, illetve, ha a középiskola nem szervez érettségi vizsgát, a kijelölt középiskolában,
+
+…
+
+(5) A tanulói jogviszony, vendégtanulói jogviszony megszűnése után rendes, kiegészítő, szintemelő, ismétlő érettségi vizsgára, …
+
+48. § (1) Azok részére, akik vendégtanulóként tettek érettségi vizsgát, illetőleg akik pótló vizsgát tehetnek, vagy akiknek javítóvizsgát kell tenniük, valamint akik előrehozott vizsgát tettek, az érettségi vizsga eredményének kihirdetésekor a vizsgabizottság elnöke törzslapkivonatot ad át. …
+
+(3) A rendes érettségi vizsga törzslapjára az előrehozott érettségi vizsga eredményét, a vendégtanulóként tett vizsgák eredményét a kapcsolódó záradékokkal együtt a törzslapkivonattal egyezően rá kell vezetni, és a törzslapkivonatot csatolni kell a törzslapnak a tanulóra vonatkozó részéhez.
+
+==== 20/1997. (II. 13.) Korm. rendelet a közoktatásról szóló 1993. évi LXXIX. törvény végrehajtásáról ====
+
+12/E. § (1) Az intézményvezető a tanulói jogviszonyt létesítő tanuló adatait - a jogviszony létesítését követő tizenöt napon belül - köteles az Oktatási Hivatalnak a KIR-en keresztül az azonosító szám kiadásához megadni. ….
+
+(8) Az (1)-(7) bekezdés alkalmazásában tanulói jogviszonyon érteni kell a magántanulói, a vendégtanulói jogviszonyt, a kollégiumi tagsági jogviszonyt, továbbá a fejlesztő felkészítésben, fejlesztő iskolai oktatásban való részvételt is.
+
+====== Jogviszony szüneteltetése ======
+
+KT. 69. § (5) Szünetel a tanulói jogviszonya annak, akinek engedélyezték, hogy tanulmányait megszakítsa, illetőleg, akit fegyelmi határozattal a tanév folytatásától eltiltottak. A tanulónak a tanulói jogviszony szünetelése alatt is joga, hogy látogassa az iskola létesítményeit, tájékoztatást kapjon az őt érintő kérdésekben, kérje átvételét másik iskolába. A tanuló a tanulói jogviszonyon alapuló jogait - ha jogszabály másképp nem rendelkezik - a tanulói jogviszony szünetelése alatt is gyakorolhatja.
+
+KT. 109. § (4) Az állandó lakóhellyel rendelkező tanulónak a külföldi tanulmányok alatt szünetel a magyarországi tanulói jogviszonya.
+
+==== 11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről ====
+=== Záradék ===
+
+ 24. Tanulmányait .......... okból megszakította, a tanulói jogviszonya ...........-ig szünetel. Bn., TI.
+
+
+=== Egy bejegyzés a minisztérium honlapjáról ===
+
+*A magyarországi tanulói jogviszony alakulása a külföldi tanulmányok alatt*
+
+A külföldi tanulmányokat folytató tanuló magyarországi tanulói jogviszonya kétféleképpen alakulhat.
+
+ - Az állandó lakóhellyel rendelkező tanulónak a külföldi tanulmányok alatt szünetel a magyarországi tanulói jogviszonya (Kt. 109. §). Amennyiben a tanuló visszatér külföldről, az igazgató által meghatározott feltételekkel (különbözeti vizsga letétele) folytathatja tanulmányait. A tanulói jogviszony szünetelését záradék formájában bevezetik a beírási naplóba és a törzslapra. A záradék formáját a nevelési-oktatási intézmények működéséről szóló 11/1994. (VI. 8.) MKM rendelet (a továbbiakban R.) 4. sz. melléklete tartalmazza. A záradékban a tanulói jogviszony szüneteltetésének időtartamát is fel kell tüntetni. Amennyiben a család a tervezettnél hosszabb ideig tartózkodik külföldön, erről az iskolát értesítenie kell. A Kt. 69. § (5) bekezdése szerint a tanulónak a tanulói jogviszony szünetelése alatt is joga, hogy látogassa az iskola létesítményeit, tájékoztatást kapjon az őt érintő kérdésekben, kérje átvételét másik iskolába. A R. 16. §-a szerint az iskola nyilvántartásában marad az a tanköteles, aki iskolai tanulmányait külföldön folytatja. Az iskola törli a tankötelesek nyilvántartásából azt a tanulót, akinek tankötelezettsége a megfelelő életkor betöltése következtében megszűnt. Az iskolának a tanulói jogviszony szüneteléséről, megszüntetéséről értesítenie kell az illetékes jegyzőt, aki a tanköteles tanulókról nyilvántartást vezet. (Kt. 91. § (7) bek.)
+A diákigazolványról szóló 17/2005. (II. 8.) Korm. rendelet szerint a nem magyar, államilag elismert oktatási intézményben tanuló magyar állampolgár diákigazolványát a Nemzeti Erőforrás Minisztérium ügyfélszolgálata állítja ki.
+
+ - A tankötelezettség magántanulóként is teljesíthető (Kt. 7. § (1) bek.). A külföldre távozó tanuló magántanulói státuszt kérvényezhet. Ebben az esetben a tanulói jogviszony nem szünetel, a tanuló a magyar iskolában teljesíti tankötelezettségét, de általában külföldön is iskolába jár. A magántanulói státuszt a R. 4. sz. mellékletében feltüntetett záradék formájában a naplóba és a törzslapra kell bevezetni. A R. 23. §-a szerint a magántanuló érdemjegyeit az az iskola állapítja meg, amellyel a tanuló tanulói jogviszonyban áll. A magántanuló számonkérésének módját az iskola határozza meg. Ez a megoldás a tanuló túlterhelése miatt megkérdőjelezhető, hiszen a külföldi tanulmányok hazatéréskor elismerhetőek.
+
+Felhívjuk a figyelmet arra, hogy a Kt. 1. sz. mellékletének második részében foglaltak szerint a normatív hozzájárulás meghatározásakor sem a tanulói jogviszonyt szüneteltető, sem a magántanulói státusszal rendelkező tanulót nem lehet figyelembe venni."
+
+[[http://www.nefmi.gov.hu/kozoktatas/magyar-tanulok-kulfoldi-tanulmanyai]]
+
+====== Jogviszony megszűnése ======
+
+75. § (1) Megszűnik a tanulói jogviszony
+
+a) ha a tanulót másik iskola átvette, az átvétel napján;
+
+b) az általános iskola utolsó évfolyamának elvégzéséről szóló bizonyítvány kiállításának napján;
+
+c) a tankötelezettség utolsó éve szorgalmi idejének utolsó napján, ha a tanuló tanulmányait nem kívánja tovább folytatni;
+
+d) gimnáziumi tanulmányok esetén az utolsó évfolyam elvégzését követő első vizsgaidőszak utolsó napján;
+
+e) szakközépiskolai tanulmányok esetén az utolsó középiskolai évfolyam elvégzését követő első vizsgaidőszak utolsó napján, ha a tanuló a szakképzésben nem kíván továbbtanulni, vagy a továbbtanuláshoz szükséges feltételek hiányában nem tanulhat tovább;
+
+f) szakiskolában és szakközépiskolában folyó szakképzésben
+
+- az utolsó évfolyam elvégzését követő első szakmai vizsgaidőszak utolsó napján,
+
+- ha a tanuló a gyakorlati képzésben tanulószerződés alapján vesz részt, az első szakmai vizsga utolsó napján,
+
+- ha a tanuló tanulmányainak folytatására egészségileg alkalmatlanná vált,
+
+és az iskolában nem folyik másik megfelelő szakképzés, vagy a tanuló nem kíván továbbtanulni, illetve a továbbtanuláshoz szükséges feltételek hiányában nem tanulhat tovább;
+
+g) az alapfokú művészetoktatási intézményben, ha a szülő, illetve a nagykorú tanuló bejelenti, hogy kimarad az iskolából, a bejelentésben megjelölt napon, továbbá az utolsó alapfokú évfolyam utolsó napján, ha a tanuló nem tesz művészeti alapvizsgát, valamint az utolsó továbbképző évfolyam záróvizsga letételének napján, illetve ha a tanuló nem tesz záróvizsgát, az utolsó évfolyam elvégzését tanúsító bizonyítvány kiállításának napján és az i) pontban megjelölt esetben;
+
+h) a tankötelezettség megszűnése után - ha a tanuló írásban bejelenti, hogy kimarad -, a bejelentés tudomásulvételének napján;
+
+i) ha a tanuló tanulói jogviszonyát - a tanköteles tanuló kivételével - fizetési hátralék miatt az igazgató a szülő, nagykorú tanuló esetén a tanuló eredménytelen felszólítása és a tanuló szociális helyzetének vizsgálata után megszünteti, a megszüntetés tárgyában hozott döntés jogerőre emelkedésének napján. E rendelkezések nem alkalmazhatók, ha a tanuló hátrányos helyzetű.
+
+(2) Ha a tanuló betöltötte a tizenhatodik életévét, és nem végezte el az általános iskola hatodik évfolyamát, az általános iskola a tanítási év végén kérelem hiányában is kezdeményezi a tanuló átvételét a kötelező felvételt biztosító szakiskolába, amennyiben az iskolában nem folyik felnőttoktatás, illetve a tanuló nem kívánja ott folytatni a tanulmányait.
+
+(3) Megszűnik a tanuló tanulói jogviszonya - a tanköteles tanuló kivételével - ha az iskola kötelező foglalkozásairól a jogszabályban meghatározott időnél igazolatlanul többet mulasztott.
+
+(4) Megszűnik a tanulói jogviszony a kizárás az iskolából fegyelmi határozat jogerőre emelkedésének napján.
+
+(5) Az iskola a tanítási év utolsó napján egyoldalú nyilatkozattal is megszüntetheti annak a tanulónak a tanulói jogviszonyát, aki nem tanköteles, ha ugyanannak az évfolyamnak a tanulmányi követelményeit második alkalommal nem teljesítette. Az iskolai tanítási év utolsó napján megszüntethető egyoldalú nyilatkozattal annak a tanulónak a tanulói jogviszonya is, aki az e törvény 52. §-ának (1) bekezdésében meghatározottak szerint nappali rendszerű iskolai oktatásban nem vehet részt, feltéve, hogy az iskolában nincs felnőttoktatás, illetve a tanuló abban nem kíván részt venni.
+
+==== 11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről ====
+
+28. §
+
+(2) Megszűnik a tanulói jogviszonya - a tanköteles kivételével - annak, aki igazolatlanul harminc tanítási óránál többet mulaszt, feltéve, hogy az iskola a tanulót, kiskorú tanuló esetén a szülőt legalább kettő alkalommal, írásban figyelmeztette az igazolatlan mulasztás következményeire. A tanulói jogviszony megszűnéséről az iskola írásban értesíti a tanulót, kiskorú tanuló esetén a szülőt, továbbá minden esetben a tanuló állandó lakóhelye, ennek hiányában tartózkodási helye szerint illetékes regionális egészségbiztosítási pénztárat.
+
+(3) Megszűnik a tanulói jogviszonya annak, aki az alapfokú művészetoktatási intézményben igazolatlanul tíz tanítási óránál többet mulaszt, feltéve, hogy az iskola a tanulót, kiskorú tanuló esetén a szülőt legalább kettő alkalommal, írásban figyelmeztette az igazolatlan mulasztás következményeire.
+
+==== 4. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez ====
+
+A nevelési-oktatási intézmények ügyintézésének, iratkezelésének általános szabályai és a tanügyi nyilvántartások
+
+4.c) A gyermeket, a tanulót akkor lehet a felvételi és mulasztási naplóból, illetve a beírási naplóból törölni, ha az óvodai elhelyezés, a tanulói jogviszony, illetőleg a kollégiumi tagsági viszony megszűnt. A törlést a megfelelő záradék bejegyzésével kell végrehajtani.
+
+=== Záradék ===
+
+ 25. A tanuló jogviszonya
+
+ a) kimaradással,
+
+ b) ................... óra igazolatlan mulasztás miatt,
+
+ c) egészségügyi alkalmasság miatt,
+
+ d) térítési díj, tandíj fizetési hátralék miatt,
+
+ e) ........................ iskolába való átvétel miatt
+
+ megszűnt, a létszámból törölve. Bn., TI., B., N.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zaradekok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zaradekok.txt
new file mode 100644
index 00000000..c220895e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zaradekok.txt
@@ -0,0 +1,261 @@
+====== Záradékok ======
+
+Mottó:
+
+A záradékok toldott-foldott, ötletszerű rendszere totálkáros, mind vezetői, mind programozó szemmel.
+Egyet tehetünk: próbálunk a választékból tartalmilag helyeset kiválasztani, hogy mi is, a szülő is, a gyerek is értse (nagyjából) miért írtuk is be…
+Tehát: rutin / racionalitás. :)
+
+===== 11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről =====
+===== Az iskolák által alkalmazott záradékok =====
+
+Záradék Dokumentumok
+
+
+
+1. Felvéve [átvéve, a(z) ......... számú határozattal áthelyezve] a(z) (iskola címe) .................... iskolába.
+Bn., N., TI., B.
+
+
+
+1/A. Az első évfolyam követelményeit nem teljesítette, munkája előkészítőnek minősül, tanulmányait az első évfolyamon folytathatja.
+Bn., N., Tl., B.
+
+
+
+2. A ........ számú fordítással hitelesített bizonyítvány alapján tanulmányait a(z) (betűvel) .......... évfolyamon folytatja.
+Bn., TI.
+
+
+
+3. Felvette a(z) (iskola címe) ..................... iskola. Bn., TI., N.
+
+
+
+4. Tanulmányait évfolyamismétléssel kezdheti meg, illetve osztályozó vizsga letételével folytathatja.
+Bn., TI., N.
+
+
+
+4/A. ..... tantárgyból tanulmányait egyéni továbbhaladás szerint végzi. N., Tl., B.
+
+
+
+4/B. Mentesítve ..... tantárgyból az értékelés és a minősítés alól N., Tl., B.
+
+
+
+4/C. ..... tantárgy ..... évfolyamainak követelményeit egy tanévben teljesítette a következők szerint: .... N., Tl., B.
+
+
+
+5. Egyes tantárgyak tanórai látogatása alól az 19...../..... tanévben felmentve ............................................ miatt.
+N., TI., B.
+
+Kiegészülhet:
+
+osztályozó vizsgát köteles tenni
+
+
+
+6. Tanulmányait a szülő kérésére (szakértői vélemény alapján) magántanulóként folytatja. N., TI.
+
+
+
+7. Mentesítve a(z) [a tantárgy(ak) neve] ....................... tantárgy tanulása alól. N., TI., B.
+
+Megjegyzés: A törzslapra be kell jegyezni a mentesítés okát is.
+
+
+
+8. Tanulmányi idejének megrövidítése miatt a(z) ................... évfolyam tantárgyból osztályozó vizsgát köteles tenni.
+N., TI.
+
+
+
+9. A(z) évfolyamra megállapított tantervi követelményeket a tanulmányi idő megrövidítésével teljesítette.
+N., TI., B.
+
+
+
+10. A(z) ....................... tantárgy óráinak látogatása alól felmentve .................... -tól ........................ -ig.
+N.
+
+Kiegészülhet:
+
+Osztályozó vizsgát köteles tenni.
+
+
+
+11. Mulasztása miatt nem osztályozható, a nevelőtestület határozata értelmében osztályozó vizsgát tehet.
+N., TI.
+
+
+
+12. A nevelőtestület határozata: a (betűvel) .............. évfolyamba léphet, vagy N., TI., B.
+
+A nevelőtestület határozata: iskolai tanulmányait befejezte, tanulmányait .......................... évfolyamon folytathatja.
+
+
+
+13. A tanuló az .................. évfolyam követelményeit egy tanítási évnél hosszabb ideig, .................. hónap alatt teljesítette.
+N., TI.
+
+
+
+14. A(z) .................. tantárgyból javítóvizsgát tehet. N., TI., B.,
+
+A javítóvizsgán ..................... tantárgyból .......................... osztályzatot kapott ....................... évfolyamba léphet.
+TI., B.
+
+
+
+15. A .................. évfolyam követelményeit nem teljesítette, az évfolyamot megismételheti.
+N., TI., B.
+
+
+
+15/A. Az ..................... évfolyamot az 1993. évi LXXIX. törvény 72. §-ának (4) bekezdésében foglaltak alapján megismételte.
+
+
+
+16. A javítóvizsgán ................ tantárgyból elégtelen osztályzatot kapott.
+
+Évfolyamot ismételni köteles. TI., B.
+
+
+
+17. A(z) ........................ tantárgyból .......... -án osztályozó vizsgát tett. N., TI.
+
+
+
+18. Osztályozó vizsgát tett. TI., B.
+
+
+
+19. A(z) .................. tantárgy alól ............... okból felmentve. TI., B.
+
+
+
+20. A(z) ................... tanóra alól .................. okból felmentve. TI., B.
+
+
+
+21. Az osztályozó (beszámoltató, különbözeti, javító-) vizsga letételére .............................-ig halasztást kapott.
+TI., B.
+
+
+
+22. Az osztályozó (javító-) vizsgát engedéllyel a(z) ................................ iskolában független vizsgabizottság előtt tette le.
+TI., B.
+
+
+
+23. A(z) .......................... szakképesítés évfolyamán folytatja tanulmányait. TI., B., N.
+
+
+
+24. Tanulmányait ......................................... okból megszakította, a tanulói jogviszonya .......................................-ig szünetel.
+Bn., TI.
+
+
+
+25. A tanuló jogviszonya
+
+a) kimaradással,
+
+b) ................... óra igazolatlan mulasztás miatt,
+
+c) egészségügyi alkalmasság miatt,
+
+d) térítési díj, tandíj fizetési hátralék miatt,
+
+e) ........................ iskolába való átvétel miatt megszűnt, a létszámból törölve. Bn., TI., B., N.
+
+
+
+26. ............................. fegyelmező intézkedésben részesült. N.
+
+
+
+27. ............................ fegyelmi büntetésben részesült. A büntetés végrehajtása .............. ........................-ig felfüggesztve.
+
+
+
+28. Tanköteles tanuló igazolatlan mulasztása esetén Bn., TI., N.
+
+a) A tanuló ............... óra igazolatlan mulasztása miatt a szülőt felszólítottam.
+
+b) A tanuló ismételt ....................... óra igazolatlan mulasztása miatt a szülő ellen szabálysértési eljárást kezdeményeztem. Az a) pontban foglaltakat nem kell bejegyezni a Bn. és TI. dokumentumokra.
+
+
+
+29. Tankötelezettség megszűnt. Bn.
+
+
+
+30. A ................. szót (szavakat) osztályzato(ka)t ....................-ra helyesbítettem. TI., B.
+
+
+
+31. A bizonyítvány .......... lapját téves bejegyzés miatt érvénytelenítettem. B.
+
+
+
+32. Ezt a póttörzslapot a(z) ........................ következtében elvesztett (megsemmisült) eredeti helyett ............... adatai (adatok) alapján állítottam ki.
+Pót. TI.
+
+
+
+33. Ezt a bizonyítványmásodlatot az elveszett (megsemmisült) eredeti helyett ................ adatai (adatok) alapján állítottam ki.
+Pót. TI.
+
+
+
+33/A. A bizonyítványt ..... kérelmére a ..... számú bizonyítvány alapján, téves bejegyzés miatt állítottam ki. Tl., B.
+
+
+
+34. Pótbizonyítvány. Igazolom, hogy név ......................................................................, anyja neve ................................................................................................... a(z) .............................................. iskola ............................................. szak (szakmai, speciális osztály, két tanítási nyelvű osztály, tagozat) ...................... évfolyamát a(z) ........................ tanévben eredményesen elvégezte.
+
+
+
+Pót. B.
+
+
+
+35. Az iskola a tanulmányi eredmények bejegyzéséhez, a kiemelkedő tanulmányi eredmények elismeréséhez, a felvételi vizsga eredményeinek bejegyzéséhez ................ vizsga eredményének befejezéséhez vagy egyéb, a záradékok között nem szereplő, a tanulóval kapcsolatos közlés dokumentálásához a záradékokat megfelelően alkalmazhatja, illetve megfelelően záradékot alakíthat ki.
+
+
+
+36. Érettségi vizsgát tehet. TI., B.
+
+
+
+37. Gyakorlati képzésről mulasztását .......................-tól .....................-ig pótolhatja. TI., B., N.
+
+
+
+38. Beírtam a ......................................... iskola első osztályába.
+
+
+
+39. Ezt a haladási naplót .................... tanítási nappal (órával) lezártam. N.
+
+
+
+40. Ezt az osztályozó naplót ................ azaz .................... (betűvel) osztályozott tanulóval lezártam.
+N.
+
+Alkalmazott rövidítések:
+
+
+
+Beírási napló Bn.
+
+Osztálynapló N.
+
+Törzslap TI.
+
+Bizonyítvány B.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zarojegyek.txt b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zarojegyek.txt
new file mode 100644
index 00000000..91669aee
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/jogtar/zarojegyek.txt
@@ -0,0 +1,645 @@
+
+====== Zárójegyek (félévi, évvégi értékelés) ======
+
+===== Osztályzatok, érdemjegyek =====
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **70. § (1)** //A pedagógus - … - a tanuló teljesítményét, előmenetelét [color=red]tanítási év közben rendszeresen érdemjeggyel értékeli, félévkor és a tanítási év végén osztályzattal minősíti[/color]. A tanuló magatartásának és szorgalmának értékelését és minősítését az osztályfőnök - az osztályban tanító pedagógusok véleményének kikérésével - végzi. Az érdemjegyekről a tanulót és a kiskorú tanuló szülőjét rendszeresen értesíteni kell. [color=red]A félévi és az év végi osztályzatot az érdemjegyek alapján kell meghatározni.[/color] Az osztályzatról a tanulót és a kiskorú szülőjét értesíteni kell. Az érdemjegy, illetőleg az osztályzat megállapítása a tanuló teljesítményének, szorgalmának értékelésekor, minősítésekor nem lehet fegyelmezési eszköz.// \\
+>> **(2)** //Az érdemjegyek és osztályzatok - a (3) bekezdésben meghatározott kivétellel - a következők:// \\
+>> //a) a tanuló tudásának értékelésénél és minősítésénél jeles (5), jó (4), közepes (3), elégséges (2), elégtelen (1);// \\
+>> //b) a tanuló magatartásának értékelésénél és minősítésénél példás (5), jó (4), változó (3), rossz (2);// \\
+>> //c) a tanuló szorgalmának értékelésénél és minősítésénél példás (5), jó (4), változó (3), hanyag (2).// \\
+>> **(3)** //Az első-harmadik évfolyamon - félévkor és év végén, továbbá a negyedik évfolyamon félévkor - szöveges minősítéssel kell kifejezni, hogy a tanuló kiválóan, jól vagy megfelelően teljesített, illetve felzárkóztatásra szorul. Ha a tanuló „felzárkóztatásra szorul” minősítést kap, az iskolának a szülő bevonásával értékelni kell a tanuló teljesítményét, fel kell tárni a tanuló fejlődését, haladását akadályozó tényezőket, és javaslatot kell tenni az azok megszüntetéséhez szükséges intézkedésekre. [color=red]Az iskola pedagógiai programja, az évközi érdemjegyek, a félévi és az év végi osztályzatok helyett a tanuló teljesítményének, szorgalmának, magatartásának értékelésére, minősítésére a (2) bekezdésben meghatározottaktól eltérő jelölés, illetőleg szöveges értékelés alkalmazását is előírhatja.[/color] Ha az iskola nem alkalmazza az (1)-(2) bekezdésben meghatározottakat, de arra iskolaváltás vagy továbbtanulás miatt szükség van, köteles a félévi és az év végi minősítést osztályzattal is elvégezni. Az iskola által alkalmazott jelölés, értékelés érdemjegyre, osztályzatra való átváltásának szabályait a helyi tantervben kell meghatározni. Az iskola pedagógiai programja meghatározhatja azokat a tananyagokat, tantárgyakat, amelyekből a tanuló teljesítményét, előmenetelét nem kell értékelni, illetve minősíteni, továbbá eltekinthet a magatartás és szorgalom értékelésétől és minősítésétől. Nem mellőzhető azonban a tanuló teljesítményének, előmenetelének értékelése és minősítése azokból a tantárgyakból, amelyek követelményeiből állami vizsgát kell, illetve lehet tenni. A szakiskola pedagógiai programjában kell meghatározni, hogy a szakmai előkészítő és szakmai alapozó oktatás, illetve a szakközépiskola pedagógiai programjában kell meghatározni, hogy a szakmai orientáció és a szakmacsoportos alapozó oktatás keretében elsajátított ismereteket hány tantárgy keretei között értékelik és minősítik, továbbá moduláris oktatás esetén az egyes modulok értékelését és minősítését.// \\
+>> **(4)** //Az egyes tanulók év végi osztályzatát a nevelőtestület osztályozó értekezleten áttekinti, és a pedagógus, illetve az osztályfőnök által megállapított osztályzatok alapján dönt a tanuló magasabb évfolyamba lépéséről. Abban az esetben, ha az év végi osztályzat a tanuló hátrányára lényegesen eltér a tanítási év közben adott érdemjegyek átlagától, a nevelőtestület felhívja az érdekelt pedagógust, hogy adjon tájékoztatást ennek okáról, és indokolt esetben változtassa meg döntését. Ha a pedagógus nem változtatja meg döntését, és a nevelőtestület ennek indokaival nem ért egyet, az osztályzatot az évközi érdemjegyek alapján a tanuló javára módosítja. //
+
+===== 1. „Rendes” diák =====
+
+Sima ügy: érdemjegyeket írunk évközben a naplóba; az osztályzatok kerülnek tanév végén a naplóba, bizonyítványba, törzslapra.
+
+**Figyelem:**
+
+
+>> (11/1994. (VI. 8.) MKM rendelet) **24. § (1)** //Ha a tantárgy oktatása félévkor fejeződik be, a tanuló osztályzatát az év végi bizonyítványban kell feltüntetni.//
+
+
+===== 2. Nem „rendes” diák =====
+
+==== 2.1. Magántanuló ====
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **7. § (1)** //A tankötelezettség - a szülő választása alapján - iskolába járással vagy magántanulóként teljesíthető.//
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **7. § (2)** //Ha az iskola igazgatója … megítélése szerint a tanulónak hátrányos, hogy tankötelezettségének magántanulóként tegyen eleget, vagy az így elkezdett tanulmányok befejezésére nem lehet számítani, köteles erről értesíteni a gyermek lakóhelye … szerint illetékes önkormányzat jegyzőjét. A jegyző dönt arról, hogy a tanuló milyen módon teljesítse tankötelezettségét. Hátrányos helyzetű tanuló esetén az iskola igazgatójának a döntéséhez be kell szereznie a gyermekjóléti szolgálat véleményét.//
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **11. § (1)** A tanuló joga különösen, hogy \\ n) magántanuló legyen, továbbá, hogy kérje a tanórai foglalkozásokon való részvétel alóli felmentését;
+
+
+=== Magántanulóvá három módon válhat egy diák: ===
+
+ * szülői döntés alapján
+
+ * szakértői javaslatra (sajátos nevelési igényű; tanulási, stb. nehézséggel küzdő tanuló)
+
+ * szakorvosi javaslatra (tartósan beteg)
+
+Az első esetben az iskolát csak a vizsgáztatás terheli, a 2-3. esetekben felkészítési kötelezettsége is van!
+
+>> (11/1994. (VI. 8.) MKM rendelet) **23. § (1)** //Ha a tanuló - szülőjének a közoktatási törvény 7. §-a (2) bekezdésében szabályozott választása alapján - tankötelezettségének magántanulóként tesz eleget, az erről való bejelentést követő három napon belül az iskola igazgatója beszerzi a tanuló lakóhelye … szerint illetékes gyermekjóléti szolgálat véleményét, annak eldöntésére, hátrányos-e ez a megoldás a tanulónak.//
+
+>> (11/1994. (VI. 8.) MKM rendelet) **23. § (2)** //6Ha a tanuló tanulmányi kötelezettségének a szülő döntése alapján magántanulóként tesz eleget, felkészítéséről a szülő gondoskodik, illetőleg a tanuló egyénileg készül fel. Az az iskola pedig, amellyel a tanuló tanulói jogviszonyban áll - kivéve, ha a tanuló független vizsgabizottság előtt ad számot tudásáról - állapítja meg a tanuló érdemjegyeit és osztályzatait, továbbá dönt - minden esetben - a tanuló magasabb évfolyamra lépésével kapcsolatos kérdésekben. Az iskola igazgatója köteles tájékoztatni a tanulót, illetve a szülőt a magántanulói jogairól és kötelességeiről. //
+
+>> (11/1994. (VI. 8.) MKM rendelet) **23. § (3)** //Ha a sajátos nevelési igényű tanuló az illetékes szakértői és rehabilitációs bizottság, a beilleszkedési, magatartási, tanulási nehézséggel küzdő tanuló a nevelési tanácsadó szakértői véleménye alapján tanulmányait magántanulóként folytatja, iskolai neveléséről és oktatásáról - felkészítéséről, érdemjegyeinek és osztályzatainak megállapításáról, illetve az ehhez szükséges pedagógusokról - a szakértői véleményben foglaltak szerint - az az iskola gondoskodik, amellyel a tanuló tanulói jogviszonyban áll. //
+
+>> (11/1994. (VI. 8.) MKM rendelet) **23. § (4)** //Az iskola köteles gondoskodni a tanuló felkészítéséről, érdemjegyeinek és osztályzatának megállapításáról akkor is, ha a szakorvosi vélemény alapján otthoni ellátás keretében részesül tartós gyógykezelésben, és emiatt magántanulóként folytatja tanulmányait.//
+
+=== A magántanulónak minden tantárgyból (készségtárgyakból is!) osztályozóvizsgát kell tennie. ===
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **69. § (3)** //A magántanulót az iskola **valamennyi** kötelező tanórai foglalkozása alól **fel kell menteni**//.
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **69. § (4)** //Az, akit **felmentettek** a kötelező tanórai foglalkozásokon való részvétel alól, az igazgató által meghatározott időben, és a nevelőtestület által meghatározott módon, ad számot tudásáról.//
+
+>> (11/1994. MKM rendelet) **21. § (3)** //A tanuló osztályzatait évközi teljesítménye és érdemjegyei vagy az osztályozó vizsgán, … a javítóvizsgán nyújtott teljesítménye alapján kell megállapítani …//
+
+a 11/1994. MKM rendelet 1998. februárjáig érvényes szövege
+
+>>**21. § (6)** //A magántanulónak a magatartását és szorgalmát nem kell minősíteni. Az iskola helyi tanterve megengedheti, hogy a magántanulót mentesítsék a készségtárgyak tanulása alól.//
+
+ugyanez 1998. augusztusa óta:
+
+>>**21. § (5)** //A magántanulónak a magatartását és szorgalmát nem kell minősíteni.//
+
+=== A „magántanulóság” tényét a naplóban (és a törzslapon) záradék formájában rögzíteni kell (6. záradék). ===
+
+>> (6. záradék) //Tanulmányait a szülő kérésére (szakértői vélemény alapján) magántanulóként folytatja. (N., Tl.)//
+
+=== A magántanuló része az osztálynak ===
+
+A magántanuló „része” az osztálynak, és célszerű lenne, ha része legyen a tanköröknek; de „nem bír” hiányozni, illetve tanév közben nem kaphat érdemjegyeket!
+
+Az iskolai szervezet alapegysége ugyanis az **osztály**:
+
+>> (1993. évi LXXIX. törvény) **66. § (10)** //Az iskolába felvett tanulók osztályba … való beosztásáról … az igazgató dönt.//
+
+Továbbá: valamennyi kötelező nyomtatvány (beírási napló, haladási- és osztályozó napló, törzslap) osztály szerint tartja nyilván a diákokat, az adatokat.
+Így a magántanuló is mindenképpen tagja kell legyen egy osztálynak (egyszerűen nincs más lehetőség…).
+
+A tankör fogalmát a törvények, rendeletek nem ismerik, így ezekkel kapcsolatos szabályozás nincs, ugyanakkor mivel a diák nem magántanulónak születik,
+hanem körülményei okán azzá válik (pl. külföldi kiküldetés, betegség, sérülés, családi körülmények, stb.), s mindez többnyire nem szeptember elsején
+következik be -- tehát már vannak tanárai, valameddig eljutottak a tananyaggal, stb. -- logikusnak tűnik, hogy a magántanuló az e-napló lehetőségeit
+kihasználva tudja követni az osztály előrehaladását, tudjon kommunikálni tanáraival (akik vizsgáztatni fogják), osztálytársaival. Az tankörökből való
+automatikus kivétel ettől mind megfosztaná.
+
+
+
+==== 2.2. „Nem osztályozható” ====
+
+A "nem osztályozható" státusz csak megelelő számú mulasztás esetén következhet be.
+
+>> ((11/1994. MKM rendelet) **20. § (3)** //Ha a távolmaradást nem igazolják, a mulasztás igazolatlan. Az iskola köteles a szülőt értesíteni a tanköteles tanuló első igazolatlan mulasztásakor, illetve, ha a nem tanköteles kiskorú tanuló igazolatlan mulasztása a tíz órát eléri. Az értesítésben fel kell hívni a szülő figyelmét az igazolatlan mulasztás következményeire.//
+
+>> ((11/1994. MKM rendelet) **20. § (6)** //Ha a tanulónak egy tanítási évben az igazolt és igazolatlan mulasztása együttesen \\ \\
+ a) … a kettőszázötven tanítási órát, \\ \\
+ d) egy adott tantárgyból a tanítási órák harminc százalékát meghaladja \\ \\
+ és emiatt a tanuló teljesítménye tanítási év közben nem volt érdemjeggyel értékelhető, a tanítási év végén nem osztályozható, kivéve, ha a nevelőtestület engedélyezi, hogy osztályozóvizsgát tegyen. //
+
+A lehetséges esetek:
+
+=== a diák „keveset” hiányzik ===
+
+azaz összesen nem több mint 250 óra, és tantárgyanként legfeljebb 30% a hiányzások száma.
+
+Ekkor a diák osztályozható/osztályzandó (**szaktanár felelőssége**, hogy legyen elegendő érdemjegye!)
+
+=== a diák „sokat” hiányzik ===
+
+azaz összesen több mint 250 óra, vagy legalább egy tárgyból több mint 30% a mulasztások száma
+
+Ekkor a diák osztályozhatóságáról az érintett **szaktanár(ok) dönt(enek)** (~ van-e elég jegye)
+
+Ha legalább egy tanár nem osztályozhatónak nyilvánítja, nevelőtestület dönt az osztályozó vizsga engedélyezéséről (megtagadására csekély az esély)
+
+== engedély esetén a tanuló osztályozóvizsgát tesz az adott tárgy(ak)ból ==
+
+>> (11. záradék) // Mulasztása miatt nem osztályozható, a nevelőtestület határozata értelmében osztályozó vizsgát tehet.// (N., TI.)
+
+== ha nem tehet osztályozóvizsgát, évet kell ismételnie ==
+
+Kivételes esetben a nevelőtestület megtagadhatja az osztályozóvizsga lehetőségét, akkor erről egy formailag tökéletes, külön dokumentumban rögzített, aláírt, postázott, stb. határozat születik.
+
+>> (11/1994. MKM rendelet) **20. § (6)** // A nevelőtestület az osztályozóvizsga letételét akkor tagadhatja meg, ha az igazolatlan mulasztások száma meghaladja az igazolt mulasztások számát, és az iskola eleget tett a (3) bekezdésben meghatározott értesítési kötelezettségének. Ha a tanuló a tanítási év végén nem osztályozható, tanulmányait évfolyamismétléssel folytathatja. Ha a tanuló mulasztásainak száma már az első félév végére meghaladja a meghatározott mértéket, és emiatt teljesítménye nem volt érdemjeggyel értékelhető, félévkor osztályozóvizsgát kell tennie. //
+
+Kapcsolódó záradékként a fent emlegetett határozatra való hivatkozást rögzítünk az osztálynaplóba:
+
+> (35. záradék - egyedi szövegezést tesz lehetővé) // A .../... számú határozat alapján a tanévet megismételheti.//
+
+
+==== 2.3. „Felmentett” ====
+
+A felmentésnek **három** esetét kell megkülönböztetnünk (mindhárom esetben **igazgató által hozott határozat** intézkedik a felmentésről!):
+
+=== adott tárgyból (rész)értékelés alóli felmentés ===
+
+Csak szakértői és rehabilitációs bizottság vagy a nevelési tanácsadó szakvéleménye alapján adható ilyen felmentés,
+mely esetben a tanulónak az órákon részt kell venni, de érdemjegyet, osztályzatot nem kap (rész-mentesítés esetén kap!).
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **30. § (9)** //A sajátos nevelési igényű tanulót, illetve a beilleszkedési, tanulási, magatartási nehézséggel küzdő tanulót - jogszabályban meghatározott munkamegosztás szerint - a szakértői és rehabilitációs bizottság vagy a nevelési tanácsadó szakértői véleménye alapján … az igazgató mentesíti egyes tantárgyakból, tantárgyrészekből az értékelés és a minősítés alól. Ha a tanulót egyes tantárgyakból, tantárgyrészekből mentesítik az értékelés és minősítés alól, az iskola … egyéni foglalkozást szervez részére. Az egyéni foglalkozás keretében - egyéni fejlesztési terv alapján - segíti a tanuló felzárkóztatását a többiekhez. Az érettségi vizsgán az érintett tantárgyak helyett a tanuló - a vizsgaszabályzatban meghatározottak szerint - másik tantárgyat választhat. A tanuló részére a felvételi vizsgán, az osztályozó vizsgán, … a javítóvizsgán, az érettségi vizsgán, … biztosítani kell a hosszabb felkészülési időt, az írásbeli beszámolón lehetővé kell tenni az iskolai tanulmányok során alkalmazott segédeszköz (írógép, számítógép stb.) alkalmazását, szükség esetén az írásbeli beszámoló szóbeli beszámolóval vagy a szóbeli beszámoló írásbeli beszámolóval történő felváltását.//
+
+példa:
+<file>
+Diszkalkulia miatt mentesítve a matematika értékelés alól
+
+Ekkor matematikából nem kaphat jegyet, de tagja a tankörnek (hiányzásait jegyezni kell!)
+</file>
+<file>
+Diszgráfia miatt mentesítve a helyesírás értékelése alól
+
+Ekkor nyelvtanból kell jegyet kapnia (csak nem helyesírásra), és természetesen tagja a tankörnek.
+</file>
+
+Kapcsolódó záradék:
+
+>> (4/B. záradék) // Mentesítve ..... tantárgyból az értékelés és a minősítés alól.// (N., Tl., B.)
+
+
+=== Órák látogatása alóli felmentés ===
+
+Az igazgató engedélyezheti, hogy a tanuló az órákon ne vegyen részt. Ekkor évközben érdemjegyeket nem kap, évvégi jegyét osztályozó vizsgán kell megszereznie (ha nem csak "rövid" időszakra szól a felmentés)
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **69. § (2)** // Az igazgató … a tanulót kérelmére - részben vagy egészben - felmentheti az iskolai kötelező tanórai foglalkozásokon való részvétel alól, ha a tanuló egyéni adottságai, sajátos nevelési igénye, továbbá sajátos helyzete ezt indokolttá teszi. …//
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **69. § (4)** //Az, akit felmentettek a kötelező tanórai foglalkozásokon való részvétel alól, az igazgató által meghatározott időben, és a nevelőtestület által meghatározott módon, ad számot tudásáról. //
+
+példa:
+<file>
+élsportoló; kérelem és egyéni elbírálás alapján
+</file>
+
+Kapcsolódó záradékok:
+
+>> (5. záradék) //Egyes tantárgyak tanórai látogatása alól az 19...../..... tanévben felmentve ............................................ miatt.// Kiegészülhet: //osztályozó vizsgát köteles tenni.// (N., TI., B.)
+
+>> (10. záradék) //A(z) ... tantárgy óráinak látogatása alól felmentve ...-tól ...-ig.// Kiegészülhet: //Osztályozó vizsgát köteles tenni.// (N.)
+
+=== Tárgy tanulása alóli felmentés ===
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **69. § (2)** // … Az igazgató a tanulót kérelmére mentesítheti a készségtárgyak tanulása alól, ha azt egyéni adottsága vagy sajátos helyzete indokolttá teszi.//
+
+Ez az az eset, amikor a tanulónak az órákon nem kell részt vennie, évközi érdemjegyet, illetve évvégi osztályzat sem kap. Csak **készségtárgyaknál** fordulhat elő.
+
+>> (11/1994. (VI. 8.) MKM rendelet) **23. § (5)** //Ha a tanulót a közoktatási törvény 69. §-ának (2) bekezdése alapján egyéni adottsága vagy sajátos helyzete alapján mentesítették a testnevelés, a művészetek, a technika tantárgyak és egyéb gyakorlati jellegű tantárgyak, foglalkozások tanulása alól, tudásáról nem kell számot adnia. A mentesítés iránti kérelemben meg kell jelölni a kérelem indokát. Ha a mentesítést a sajátos nevelési igényű tanuló testi, érzékszervi, értelmi, beszédfogyatékosságára, autizmusára, halmozottan fogyatékosságára, vagy a pszichés fejlődés zavarai miatt a nevelési, tanulási folyamatban való tartós és súlyos akadályozottságára tekintettel kérik, az illetékes szakértői és rehabilitációs bizottság, ha pedig tanulási nehézségre tekintettel kérik, a nevelési tanácsadó szakértői véleményét be kell csatolni.//
+
+Tipikusan: testnevelés III. kategória:
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **35. § (8)** //A gyógytestnevelés feladata a gyermek, a tanuló speciális egészségügyi célú testnevelési foglalkoztatása, ha az iskolaorvosi vagy szakorvosi szűrővizsgálat gyógy- vagy könnyített testnevelésre utalja.//
+
+>> (1. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez) **1.** //A tanuló, ha egészségi állapota miatt a testnevelési órák gyakorlatait csak részben vagy egyáltalán nem tudja elvégezni - az orvosi szakvéleményben foglaltak szerint - a kötelező testnevelési óra keretében vagy helyett könnyített testnevelésre (a továbbiakban: I. kategória) vagy a kötelező testnevelési óra helyett gyógytestnevelésre (a továbbiakban: II. kategória) kell beosztani, illetve fel kell menteni (a továbbiakban: III. kategória) mindenféle testnevelési órán való részvétel alól.//
+
+Kapcsolódó záradék:
+
+>> (7. záradék) //Mentesítve a(z) [a tantárgy(ak) neve] ....................... tantárgy tanulása alól.// (N., TI., B.)
+
+
+==== 2.4. Előrehozott osztályozó vizsga - a „Gyors” ====
+
+Tipikusan: előrehozott érettségi vizsgát kíván tenni a tárgy tanulásának befejezése előtt
+
+>> (11/1994. (VI. 8.) MKM rendelet) **21. § (4)** //A félévi és a tanév végi osztályzat megállapításához a tanulónak osztályozó vizsgát kell tennie, ha\\ \\
+b) engedélyezték, hogy egy vagy több tantárgy tanulmányi követelményének egy tanévben, illetve az előírtnál rövidebb idő alatt tegyen eleget,//
+
+Kapcsolódó záradékok:
+
+>> (4/C. záradék) //... tantárgy ... évfolyamainak követelményeit egy tanévben teljesítette a következők szerint: ... // (N., Tl., B.)
+
+>> (8. záradék) //Tanulmányi idejének megrövidítése miatt a(z) ... évfolyam tantárgyból osztályozó vizsgát köteles tenni. // (N., TI.)
+
+A tanuló az adott tárgy **érettségiig hátralévő anyagából** tesz osztályozó vizsgát/vizsgákat.
+
+**Minden érintett év/évfolyam** anyagából külön-külön osztályzatot kap!
+
+>> (11/1994. (VI. 8.) MKM rendelet) **24. § (3)** //Ha a tanuló egy vagy több tantárgy több évfolyamra megállapított követelményeit egy tanévben teljesíti, osztályzatait minden érintett évfolyamra meg kell állapítani.//
+
+Az „előrehozott” vizsga eredménye a naplóba nem kerülhet bele (hiszen az adott évfolyamhoz tartozó napló még nem áll rendelkezésre!)
+- csak ha szorgalmi időszakban (tanítási év, tanév alatt ~ szept. 1. - jún. 15. között) az osztály aktuális évfolyamában szerzett zárójegyről van szó.
+
+Az előrehozott érettségi után a tanulót a tankörből célszerű kivenni, hiszen a továbbiakban az adott tárgyat tanulnia nem kötelező, így értékelni, hiányzásait adminisztrálni sem kell.
+
+>> (11/1994. (VI. 8.) MKM rendelet) **26 § (5)** //Ha a tanuló előrehozott érettségi vizsgát tett valamely vizsgatantárgyból, ezáltal e tantárgy tanulmányi követelményeit teljesítette. Az iskola magasabb évfolyamán vagy évismétlés esetén ezt a tantárgyat nem köteles tanulni.//
+
+==== 2.5. Utólag letett osztályozó vizsga - a „Lassú” ====
+
+A tanuló utólag vizsgázik egy tárgy korábbi éveinek anyagából (pl. mert érettségizni szeretne belőle, de valamiért órákon nem tanulta)
+
+Kapcsolódó záradék:
+
+>> (17. záradék) //A(z) ... tantárgyból ...-án osztályozó vizsgát tett. // (N., Tl.)
+
+vagy
+
+>> (4/C. záradék) //... tantárgy ... évfolyamainak követelményeit egy tanévben teljesítette a következők szerint: ... // (N., Tl., B.)
+
+Az adott tárgy **hiányzó éveinek/évfolyamainak** anyagából tesz osztályozó vizsgát/vizsgákat.
+
+**Minden érintett év** anyagából külön-külön osztályzatot kap!
+
+>> (11/1994. (VI. 8.) MKM rendelet) **24. § (3)** //Ha a tanuló egy vagy több tantárgy több évfolyamra megállapított követelményeit egy tanévben teljesíti, osztályzatait minden érintett évfolyamra meg kell állapítani.//
+
+Az „utóvizsgázó” eredménye a naplóba nem kerülhet bele (hiszen a napló már le van zárva!) - csak ha szorgalmi időszakban (tanítási év, tanév alatt ~ szept. 1. - jún. 15. között) az osztály aktuális évfolyamában szerzett zárójegyről van szó.
+
+===== 3. Vizsgák =====
+
+A vizsgák (javító, osztályozó, pótló) lebonyolítási rendje (bizottság, tétel, felkészülési idő, stb.) gyakorlatilag megegyezik az érettségivel.
+
+>> [[http://net.jogtar.hu/jr/gen/hjegy_doc.cgi?docid=99400011.mkm#pr2800|lsd. 9. számú melléklet a 11/1994. MKM rendelethez]]
+
+A vizsgák részeit, tartalmát viszont a tantestület állapítja meg.
+
+>> (11/1994. MKM rendelet) **26.§ (2)** //A tanulmányok alatti vizsga követelményeit, részeit (írásbeli, szóbeli, gyakorlati) és az értékelés rendjét a nevelőtestület a helyi tanterv alapján határozza meg, és a helyben szokásos módon nyilvánosságra hozza. A tanulmányok alatti vizsga - ha azt az iskolában szervezik - vizsgabizottságának elnökét és tagjait az igazgató … bízza meg.//
+
+A vizsgák eredménye tipikusan nem a naplóban, hanem jegyzőkönyvek alapján a bizonyítványban és a törzslapon kerül rögzítésre!
+Kivéve ha szorgalmi időszakban, az osztály aktuális évfolyamában szerzett zárójegyről van szó!
+
+Az osztályozó napló a szorgalmi időszak (lsd. tanítási év fogalma) alatt (szept. 1. - jún. 15. között) „él” (megnyitjuk - lezárjuk - irattárban őrizzük).
+
+>> (1993. évi LXXIX. törvény a közoktatásról) **121. § (1)** //E törvény alkalmazásában \\
+>> 38. tanév: az iskolában általában szeptember 1-jétől a következő év augusztus 31-éig tartó időszak;// \\
+>> **52. § (1)** //Az iskolában a szorgalmi idő, tanítási év minden év szeptemberének első munkanapján kezdődik és - az érettségi vizsga s a szakmai vizsga évét kivéve - minden év június hónap 15-én, illetve, ha ez a nap nem munkanap, a június 15-ét megelőző munkanapon fejeződik be.//
+
+Ebből következően:
+
+ * javítóvizsga (aug. második fele) eredménye nem kerülhet bele,
+
+ * pótlóvizsga (még később) eredménye nem kerülhet bele,
+
+ * „előrehozott” vizsga (napló még nincs!) eredménye nem kerülhet bele,
+
+ * „utóvizsgázó” (napló már lezárva!) eredménye nem kerülhet bele,
+
+ * osztályozóvizsga (magántanuló, mulasztó, felmentett), bekerül, ha a napló „életciklusa” alatt volt.
+
+==== 3.1. Osztályozó vizsga ====
+
+Osztályozó vizsgára akkor kerülhet sor, ha:
+
+=== a diák fel lett mentve az adott tárgy óráinak látogatása alól ===
+
+>> (11/1994. MKM rendelet) **21. § (4)** //A félévi és a tanév végi osztályzat megállapításához a tanulónak osztályozó vizsgát kell tennie, ha \\
+ a) felmentették a tanórai foglalkozásokon való részvétele alól,//
+
+Ekkor az érintett tárgy(ak)ból vizsgázik (félévben és a tanév végén)
+
+Adminisztráció: a vizsga eredménye: napló (jegy + záradék), bizonyítvány, törzslap
+
+>> (17. záradék) //A(z) ... tantárgyból ...-án osztályozó vizsgát tett.//
+
+=== a diák előrehozott érettségi vizsgát kíván tenni ===
+
+>> (11/1994. MKM rendelet) **21. § (4)** //A félévi és a tanév végi osztályzat megállapításához a tanulónak osztályozó vizsgát kell tennie, ha \\ \\
+b) engedélyezték, hogy egy vagy több tantárgy tanulmányi követelményének egy tanévben, illetve az előírtnál rövidebb idő alatt tegyen eleget,//
+
+Ekkor az adott tárgy(ak) érettségiig hátralévő anyagából vizsgázik (minden érintett év anyagából külön-külön osztályzatot kap!)
+
+Adminisztráció: a vizsga eredménye: bizonyítvány, törzslap (tehát: naplóban nem szerepel! - csak, ha az adott évfolyamra (is) vonatkozik a vizsga - pl. áprilisban vizsgázik, hogy a májusi érettségin részt vehessen)
+
+>> (4/C. záradék) //... tantárgy ... évfolyamainak követelményeit egy tanévben teljesítette a következők szerint: ...// (N., Tl., B.)
+
+Az osztályzatokat a törzslapra „előre” be kell írni, bizonyítványba csak akkor, ha minden osztályzata megvan!
+
+>> (11/1994. MKM rendelet) **24. § (3)** //… Ha a tanuló nem teljesíti az iskolai évfolyam valamennyi követelményét, az egyes tantárgyak osztályzatát a törzslapján valamennyi elvégzett évfolyamon fel kell tüntetni, és a vizsga évében, ezt követően az adott évben kiállításra kerülő év végi bizonyítványba be kell írni.//
+
+példa:
+<file>
+Egy éppen csak 11.-es diák szeptember elején levizsgázik a 11-12. évfolyam angol anyagából, hogy ősszel előrehozott érettségit tehessen.
+- A törzslapba mindkét eredményt be kell írni.
+- A 11.-es tanév végén a bizonyítványba bekerül a 11-es osztályzata;
+- A 12. évfolyam végén pedig a bizonyítványba bekerül a 12-es osztályzata.
+- A 11.-es naplóban a 11.-es osztályzat (zárójegy) jelenik meg;
+- A 12.-es napló még nincs és később se kerül bele ez a zárójegy
+- A diák évközben már nem kaphat érdemjegyet, nem regisztrálható hiányzása (se 11. se 12. évfolyamon) - tehát ez esetben célszerű megszűntetni a tankör tagságát!
+</file>
+
+=== a diák „sokat” mulasztott ===
+
+>> (11/1994. MKM rendelet) **21. § (4)** //A félévi és a tanév végi osztályzat megállapításához a tanulónak osztályozó vizsgát kell tennie, ha \\ \\
+c) a 20. § (6) bekezdésében meghatározott időnél többet mulasztott, és a nevelőtestület döntése alapján osztályozó vizsgát tehet,//
+
+Ekkor a szaktanárok által kijelölt tárgy(ak)ból vizsgázik (praktikusan a tanév végén).
+
+Adminisztráció: a vizsga eredménye: napló (osztályzat + záradék), bizi, törzslap
+
+>> (17. záradék) //A(z) ... tantárgyból ...-án osztályozó vizsgát tett.//
+
+=== a diák magántanuló ===
+
+Ekkor minden tantárgyból vizsgázik (félévben és a tanév végén)
+
+Adminisztráció: a vizsga eredménye: napló, bizi, törzslap
+
+>> (18. záradék) Osztályozó vizsgát tett.
+
+Jegyek szokásos helyen a naplóban.
+
+=== a diák „utóvizsgázó” ===
+
+Ekkor utólag vizsgázik egy tárgy korábbi éveinek anyagából (minden érintett év anyagából külön-külön osztályzatot kap!)
+
+Adminisztráció: a vizsga eredménye: bizi, törzsla (Tehát: naplóban nem szerepel!)
+
+példa:
+<file>
+Egy 11.-es diák levizsgázik a 9-10. évfolyam latin anyagából, mert korábbi iskolájában nem tanulta.
+- A törzslapba mindkét eredményt be kell írni.
+- A 9-10.-es bizonyítványába bekerül a két osztályzat.
+- A 11.-es naplóba erről nem kerül be semmi.
+</file>
+
+>> (17. záradék) //A(z) ... tantárgyból ...-án osztályozó vizsgát tett.//
+
+Osztályozó vizsgát szept. 1 - jún. 15. között (bármikor) lehet tartani, de az érintett - nyomós indok alapján - kérheti a vizsga más időpontban való megtartását is.
+
+>> (11/1994. (VI. 8.) MKM rendelet) **25. § (1)** //Az iskola osztályozó vizsgát a tanítási év során bármikor szervezhet. A vizsgák időpontjáról a tanulót a jelentkezéskor tájékoztatni kell.//
+
+>> (11/1994. (VI. 8.) MKM rendelet) **25. § (2)** //Az iskolában tartott tanulmányok alatti vizsga esetén az igazgató … engedélyezheti, hogy a tanuló az (1) bekezdés szerint előre meghatározott időponttól eltérő időben tegyen vizsgát.//
+
+Ha a tanuló az érintett tárgy(ak)ból rendelkezik (legalább elégséges) félévi osztályzattal, akkor csak a második félév anyagából kell vizsgáznia. A bizonyítványba a két osztályzat átlaga alapján képzett osztályzatot kell beírni.
+
+Ha a tanuló félévben nem osztályozható, akkor félévben is osztályozó vizsgát kell tennie.
+
+>> (11/1994. (VI. 8.) MKM rendelet) **20. § (6)** //... Ha a tanuló mulasztásainak száma már az első félév végére meghaladja a meghatározott mértéket, és emiatt teljesítménye nem volt érdemjeggyel értékelhető, félévkor osztályozóvizsgát kell tennie.//
+
+==== 3.2. Javítóvizsga ====
+
+Javítóvizsgát két esetben tehet a diák:
+
+=== a tanév végén elégtelen osztályzatot kapott valamely tárgyból ===
+
+>> (11/1994. MKM rendelet) **21. § (8)** //Ha a tanuló a tanév végén - a tantárgyak számától függetlenül - elégtelen osztályzatot kapott, javítóvizsgát tehet.//
+
+=== ha az osztályozó vizsgáról igazolatlanul hiányzott, nem fejezte be, az előírt időpontig nem tette le ===
+
+>> (11/1994. MKM rendelet) **21. § (9)** //Javítóvizsga letételével folytathatók a tanulmányok akkor is, ha a tanuló az osztályozó vizsgáról … igazolatlanul távol maradt, vagy azt nem fejezte be, illetve az előírt időpontig nem tette le.//
+
+>> (9. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez) **2.16.** //Ha a vizsgázó az írásbeli vizsgáról felróható okból elkésik, távol marad, vagy a vizsgáról engedély nélkül eltávozik, az adott vizsgatantárgyból javítóvizsgát tehet az igazgató által meghatározott időben.//
+
+=== Javítóvizsgát augusztus 15- 31. között lehet szervezni. ===
+
+>> (11/1994. MKM rendelet) **25. § (1)** //Javítóvizsga letételére az augusztus 15-től augusztus 31-ig terjedő időszakban … kell a vizsgaidőszakot kijelölni.// \\
+>> **(2)** //Az iskolában tartott tanulmányok alatti vizsga esetén az igazgató … engedélyezheti, hogy a tanuló az (1) bekezdés szerint előre meghatározott időponttól eltérő időben tegyen vizsgát.//
+
+=== Adminisztráció ===
+
+javítóvizsga lehetősége: napló, bizonyítvány, törzslap
+
+>> (14. záradék) // A(z) ... tantárgyból javítóvizsgát tehet. //(N., Tl., B.)
+
+javítóvizsga eredménye: bizonyítvány, törzslap (Tehát: naplóban nem szerepel!)
+
+>> (14. záradék) //A javítóvizsgán ... tantárgyból ... osztályzatot kapott ... évfolyamba léphet.// (Tl., B.)
+
+>> (16. záradék) //A javítóvizsgán ... tantárgyból elégtelen osztályzatot kapott. Évfolyamot ismételni köteles.// (Tl., B.)
+
+==== 3.3. Pótlóvizsga ====
+
+Pótlóvizsga csak akkor tartható, ha a javítóvizsgán, vagy az osztályozó vizsgán a diák külső (igazolt!) ok miatt nem tudott megjelenni.
+
+>> (9. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez) **2.15.** //Ha a vizsgázó az írásbeli vizsgáról fel nem róható okból elkésik, távol marad, a megkezdett vizsgáról engedéllyel eltávozik mielőtt a válaszadást befejezné// \\
+>> //a) az igazgató - ha ehhez a feltételek megteremthetőek - hozzájárulhat ahhoz, hogy az adott vizsganapon, vagy a vizsgázó és az intézmény számára megszervezhető legközelebbi időpontban a vizsgázó pótlóvizsgát tegyen,// \\ \\
+>> **2.17.** //A 2.16. és e pont alkalmazásában a vizsgázónak fel nem róható ok, minden olyan a vizsgán való részvételt gátló esemény, körülmény, amelynek bekövetkezése nem vezethető vissza a vizsgázó szándékos vagy gondatlan magatartására.//
+
+Adminisztráció:
+
+pótlóvizsga lehetősége: külön igazgatói határozat
+
+pótlóvizsga eredménye: bizonyítvány, törzslap (Tehát: naplóban nem szerepel!)
+
+Figyelem:
+
+>> (11/1994. MKM rendelet) **27. § (2)** // Ha a tanuló a következő tanév kezdetéig azért nem tett eleget a tanulmányi követelményeknek, mert az előírt vizsga letételére a nevelőtestülettől halasztást kapott, az engedélyezett határidő lejártáig tanulmányait felsőbb évfolyamon folytathatja. //
+
+
+===== 4. Idézett jogszabályok: =====
+
+<code>
+ 1993. évi LXXIX. törvény a közoktatásról (Kotv)
+
+ 11/1994. (VI. 8.) MKM rendelet a nevelési-oktatási intézmények működéséről (MűkR)
+
+Tanév, (ą) tanítási év
+
+ (Kotv)
+
+ 121. § (1) E törvény alkalmazásában
+
+ 38. tanév: az iskolában általában szeptember 1-jétől a következő év augusztus 31-éig tartó időszak;
+
+ 52. § (1) Az iskolában a szorgalmi idő, tanítási év minden év szeptemberének első munkanapján kezdődik és - az érettségi vizsga s a szakmai vizsga évét kivéve - minden év június hónap 15-én, illetve, ha ez a nap nem munkanap, a június 15-ét megelőző munkanapon fejeződik be.
+
+Érdemjegy, (ą) osztályzat
+
+ (Kotv)
+
+ 70. § (1) A pedagógus - … - a tanuló teljesítményét, előmenetelét tanítási év közben rendszeresen érdemjeggyel értékeli, félévkor és a tanítási év végén osztályzattal minősíti. A tanuló magatartásának és szorgalmának értékelését és minősítését az osztályfőnök - az osztályban tanító pedagógusok véleményének kikérésével - végzi. Az érdemjegyekről a tanulót és a kiskorú tanuló szülőjét rendszeresen értesíteni kell. A félévi és az év végi osztályzatot az érdemjegyek alapján kell meghatározni. Az osztályzatról a tanulót és a kiskorú szülőjét értesíteni kell. Az érdemjegy, illetőleg az osztályzat megállapítása a tanuló teljesítményének, szorgalmának értékelésekor, minősítésekor nem lehet fegyelmezési eszköz.
+
+ (2) Az érdemjegyek és osztályzatok - a (3) bekezdésben meghatározott kivétellel - a következők:
+
+ a) a tanuló tudásának értékelésénél és minősítésénél jeles (5), jó (4), közepes (3), elégséges (2), elégtelen (1);
+
+ b) a tanuló magatartásának értékelésénél és minősítésénél példás (5), jó (4), változó (3), rossz (2);
+
+ c) a tanuló szorgalmának értékelésénél és minősítésénél példás (5), jó (4), változó (3), hanyag (2).
+
+ (4) Az egyes tanulók év végi osztályzatát a nevelőtestület osztályozó értekezleten áttekinti, és a pedagógus, illetve az osztályfőnök által megállapított osztályzatok alapján dönt a tanuló magasabb évfolyamba lépéséről. Abban az esetben, ha az év végi osztályzat a tanuló hátrányára lényegesen eltér a tanítási év közben adott érdemjegyek átlagától, a nevelőtestület felhívja az érdekelt pedagógust, hogy adjon tájékoztatást ennek okáról, és indokolt esetben változtassa meg döntését. Ha a pedagógus nem változtatja meg döntését, és a nevelőtestület ennek indokaival nem ért egyet, az osztályzatot az évközi érdemjegyek alapján a tanuló javára módosítja.
+
+ (MűkR)
+
+ 24. § (1) Ha a tantárgy oktatása félévkor fejeződik be, a tanuló osztályzatát az év végi bizonyítványban kell feltüntetni.
+
+ (5) Ha a tanuló előrehozott érettségi vizsgát tett valamely vizsgatantárgyból, ezáltal e tantárgy tanulmányi követelményeit teljesítette. Az iskola magasabb évfolyamán vagy évismétlés esetén ezt a tantárgyat nem köteles tanulni.
+
+Magántanuló
+
+ (Kotv)
+
+ 7. § (1) A tankötelezettség - a szülő választása alapján - iskolába járással vagy magántanulóként teljesíthető.
+
+ (2) Ha az iskola igazgatója … megítélése szerint a tanulónak hátrányos, hogy tankötelezettségének magántanulóként tegyen eleget, vagy az így elkezdett tanulmányok befejezésére nem lehet számítani, köteles erről értesíteni a gyermek lakóhelye … szerint illetékes önkormányzat jegyzőjét. A jegyző dönt arról, hogy a tanuló milyen módon teljesítse tankötelezettségét. Hátrányos helyzetű tanuló esetén az iskola igazgatójának a döntéséhez be kell szereznie a gyermekjóléti szolgálat véleményét.
+
+ 11. § (1) A tanuló joga különösen, hogy
+
+ n) magántanuló legyen, továbbá, hogy kérje a tanórai foglalkozásokon való részvétel alóli felmentését;
+
+ 69. § (3) A magántanulót az iskola valamennyi kötelező tanórai foglalkozása alól fel kell menteni.
+
+ (4) Az, akit felmentettek a kötelező tanórai foglalkozásokon való részvétel alól, az igazgató által meghatározott időben, és a nevelőtestület által meghatározott módon, ad számot tudásáról.
+
+ (MűkR)
+
+ 23. § (1) Ha a tanuló - szülőjének a közoktatási törvény 7. §-a (2) bekezdésében szabályozott választása alapján - tankötelezettségének magántanulóként tesz eleget, az erről való bejelentést követő három napon belül az iskola igazgatója beszerzi a tanuló lakóhelye … szerint illetékes gyermekjóléti szolgálat véleményét, annak eldöntésére, hátrányos-e ez a megoldás a tanulónak.
+
+ (2) Ha a tanuló tanulmányi kötelezettségének a szülő döntése alapján magántanulóként tesz eleget, felkészítéséről a szülő gondoskodik, illetőleg a tanuló egyénileg készül fel. Az az iskola pedig, amellyel a tanuló tanulói jogviszonyban áll - kivéve, ha a tanuló független vizsgabizottság előtt ad számot tudásáról - állapítja meg a tanuló érdemjegyeit és osztályzatait, továbbá dönt - minden esetben - a tanuló magasabb évfolyamra lépésével kapcsolatos kérdésekben. Az iskola igazgatója köteles tájékoztatni a tanulót, illetve a szülőt a magántanulói jogairól és kötelességeiről.
+
+ (3) Ha a sajátos nevelési igényű tanuló az illetékes szakértői és rehabilitációs bizottság, a beilleszkedési, magatartási, tanulási nehézséggel küzdő tanuló a nevelési tanácsadó szakértői véleménye alapján tanulmányait magántanulóként folytatja, iskolai neveléséről és oktatásáról - felkészítéséről, érdemjegyeinek és osztályzatainak megállapításáról, illetve az ehhez szükséges pedagógusokról - a szakértői véleményben foglaltak szerint - az az iskola gondoskodik, amellyel a tanuló tanulói jogviszonyban áll.
+
+ (4) Az iskola köteles gondoskodni a tanuló felkészítéséről, érdemjegyeinek és osztályzatának megállapításáról akkor is, ha a szakorvosi vélemény alapján otthoni ellátás keretében részesül tartós gyógykezelésben, és emiatt magántanulóként folytatja tanulmányait.
+
+Nem osztályozható
+
+ (MűkR)
+
+ 20. § (3) Ha a távolmaradást nem igazolják, a mulasztás igazolatlan. Az iskola köteles a szülőt értesíteni a tanköteles tanuló első igazolatlan mulasztásakor, illetve, ha a nem tanköteles kiskorú tanuló igazolatlan mulasztása a tíz órát eléri. Az értesítésben fel kell hívni a szülő figyelmét az igazolatlan mulasztás következményeire.
+
+ (6) Ha a tanulónak egy tanítási évben az igazolt és igazolatlan mulasztása együttesen
+
+ a) … a kettőszázötven tanítási órát,
+
+ d) egy adott tantárgyból a tanítási órák harminc százalékát meghaladja
+
+ és emiatt a tanuló teljesítménye tanítási év közben nem volt érdemjeggyel értékelhető, a tanítási év végén nem osztályozható, kivéve, ha a nevelőtestület engedélyezi, hogy osztályozóvizsgát tegyen. A nevelőtestület az osztályozóvizsga letételét akkor tagadhatja meg, ha az igazolatlan mulasztások száma meghaladja az igazolt mulasztások számát, és az iskola eleget tett a (3) bekezdésben meghatározott értesítési kötelezettségének. Ha a tanuló a tanítási év végén nem osztályozható, tanulmányait évfolyamismétléssel folytathatja. Ha a tanuló mulasztásainak száma már az első félév végére meghaladja a meghatározott mértéket, és emiatt teljesítménye nem volt érdemjeggyel értékelhető, félévkor osztályozóvizsgát kell tennie.
+
+Felmentés
+
+ (Kotv)
+
+ 30. § (9) A sajátos nevelési igényű tanulót, illetve a beilleszkedési, tanulási, magatartási nehézséggel küzdő tanulót - jogszabályban meghatározott munkamegosztás szerint - a szakértői és rehabilitációs bizottság vagy a nevelési tanácsadó szakértői véleménye alapján … az igazgató mentesíti egyes tantárgyakból, tantárgyrészekből az értékelés és a minősítés alól. Ha a tanulót egyes tantárgyakból, tantárgyrészekből mentesítik az értékelés és minősítés alól, az iskola … egyéni foglalkozást szervez részére. Az egyéni foglalkozás keretében - egyéni fejlesztési terv alapján - segíti a tanuló felzárkóztatását a többiekhez. Az érettségi vizsgán az érintett tantárgyak helyett a tanuló - a vizsgaszabályzatban meghatározottak szerint - másik tantárgyat választhat. A tanuló részére a felvételi vizsgán, az osztályozó vizsgán, … a javítóvizsgán, az érettségi vizsgán, … biztosítani kell a hosszabb felkészülési időt, az írásbeli beszámolón lehetővé kell tenni az iskolai tanulmányok során alkalmazott segédeszköz (írógép, számítógép stb.) alkalmazását, szükség esetén az írásbeli beszámoló szóbeli beszámolóval vagy a szóbeli beszámoló írásbeli beszámolóval történő felváltását.
+
+ 35. § (8) A gyógytestnevelés feladata a gyermek, a tanuló speciális egészségügyi célú testnevelési foglalkoztatása, ha az iskolaorvosi vagy szakorvosi szűrővizsgálat gyógy- vagy könnyített testnevelésre utalja.
+
+ 69. § (2) Az igazgató … a tanulót kérelmére - részben vagy egészben - felmentheti az iskolai kötelező tanórai foglalkozásokon való részvétel alól, ha a tanuló egyéni adottságai, sajátos nevelési igénye, továbbá sajátos helyzete ezt indokolttá teszi. Az igazgató a tanulót kérelmére mentesítheti a készségtárgyak tanulása alól, ha azt egyéni adottsága vagy sajátos helyzete indokolttá teszi.
+
+ (4) Az, akit felmentettek a kötelező tanórai foglalkozásokon való részvétel alól, az igazgató által meghatározott időben, és a nevelőtestület által meghatározott módon, ad számot tudásáról.
+
+ (MűkR)
+
+ 23. § (5) Ha a tanulót a közoktatási törvény 69. §-ának (2) bekezdése alapján egyéni adottsága vagy sajátos helyzete alapján mentesítették a testnevelés, a művészetek, a technika tantárgyak és egyéb gyakorlati jellegű tantárgyak, foglalkozások tanulása alól, tudásáról nem kell számot adnia. A mentesítés iránti kérelemben meg kell jelölni a kérelem indokát. Ha a mentesítést a sajátos nevelési igényű tanuló testi, érzékszervi, értelmi, beszédfogyatékosságára, autizmusára, halmozottan fogyatékosságára, vagy a pszichés fejlődés zavarai miatt a nevelési, tanulási folyamatban való tartós és súlyos akadályozottságára tekintettel kérik, az illetékes szakértői és rehabilitációs bizottság, ha pedig tanulási nehézségre tekintettel kérik, a nevelési tanácsadó szakértői véleményét be kell csatolni.
+
+ 1. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez: A könnyített és a gyógytestnevelés szervezésének és a tanulók könnyített vagy gyógytestnevelési órára történő beosztásának rendje
+
+ 1. A tanuló, ha egészségi állapota miatt a testnevelési órák gyakorlatait csak részben vagy egyáltalán nem tudja elvégezni - az orvosi szakvéleményben foglaltak szerint - a kötelező testnevelési óra keretében vagy helyett könnyített testnevelésre (a továbbiakban: I. kategória) vagy a kötelező testnevelési óra helyett gyógytestnevelésre (a továbbiakban: II. kategória) kell beosztani, illetve fel kell menteni (a továbbiakban: III. kategória) mindenféle testnevelési órán való részvétel alól.
+
+Vizsgák
+Javítóvizsga
+
+ (MűkR)
+
+ 21. § (3) A tanuló osztályzatait évközi teljesítménye és érdemjegyei vagy az osztályozó vizsgán, … a javítóvizsgán nyújtott teljesítménye alapján kell megállapítani … (a továbbiakban a felsorolt vizsgák együtt: tanulmányok alatti vizsga). A tanulmányok alatti vizsgát iskolában illetve … független vizsgabizottság előtt lehet tenni. … A szabályosan megtartott tanulmányok alatti vizsga nem ismételhető.
+
+ (8) Ha a tanuló a tanév végén - a tantárgyak számától függetlenül - elégtelen osztályzatot kapott, javítóvizsgát tehet.
+
+ (9) Javítóvizsga letételével folytathatók a tanulmányok akkor is, ha a tanuló az osztályozó vizsgáról … igazolatlanul távol maradt, vagy azt nem fejezte be, illetve az előírt időpontig nem tette le.
+
+ 25. § (1) Javítóvizsga letételére az augusztus 15-től augusztus 31-ig terjedő időszakban … kell a vizsgaidőszakot kijelölni.
+
+ (2) Az iskolában tartott tanulmányok alatti vizsga esetén az igazgató … engedélyezheti, hogy a tanuló az (1) bekezdés szerint előre meghatározott időponttól eltérő időben tegyen vizsgát.
+
+Pótlóvizsga
+
+ 9. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez: A tanulmányok alatti vizsgák eljárási szabályai
+
+ 2.15. Ha a vizsgázó az írásbeli vizsgáról fel nem róható okból elkésik, távol marad, a megkezdett vizsgáról engedéllyel eltávozik mielőtt a válaszadást befejezné
+
+ a) az igazgató - ha ehhez a feltételek megteremthetőek - hozzájárulhat ahhoz, hogy az adott vizsganapon, vagy a vizsgázó és az intézmény számára megszervezhető legközelebbi időpontban a vizsgázó pótlóvizsgát tegyen,
+
+ 2.16. Ha a vizsgázó az írásbeli vizsgáról felróható okból elkésik, távol marad, vagy a vizsgáról engedély nélkül eltávozik, az adott vizsgatantárgyból javítóvizsgát tehet az igazgató által meghatározott időben.
+
+ 2.17. A 2.16. és e pont alkalmazásában a vizsgázónak fel nem róható ok, minden olyan a vizsgán való részvételt gátló esemény, körülmény, amelynek bekövetkezése nem vezethető vissza a vizsgázó szándékos vagy gondatlan magatartására.
+
+ 3.16. A szóbeli vizsgán és a gyakorlati vizsgán elkövetett szabálytalanság, a felróható, vagy fel nem róható okból történő vizsga megszakítás, vagy a vizsgán meg nem jelenés esetében az igazgató a 2.13., 2.15-2.18., 2.21. pontokban leírtak szerint jár el.
+
+Osztályozó vizsga
+
+ (MűkR)
+
+ 21. § (4) A félévi és a tanév végi osztályzat megállapításához a tanulónak osztályozó vizsgát kell tennie, ha
+
+ a) felmentették a tanórai foglalkozásokon való részvétele alól,
+
+ b) engedélyezték, hogy egy vagy több tantárgy tanulmányi követelményének egy tanévben, illetve az előírtnál rövidebb idő alatt tegyen eleget,
+
+ c) a 20. § (6) bekezdésében meghatározott időnél többet mulasztott, és a nevelőtestület döntése alapján osztályozó vizsgát tehet,
+
+ e) a tanuló a félévi, illetőleg év végi osztályzatának megállapítása érdekében független vizsgabizottság előtt tesz vizsgát.
+
+ (5) A magántanulónak a magatartását és szorgalmát nem kell minősíteni.
+
+ 24. § (3) Ha a tanuló egy vagy több tantárgy több évfolyamra megállapított követelményeit egy tanévben teljesíti, osztályzatait minden érintett évfolyamra meg kell állapítani. Ha a tanuló több iskolai évfolyam valamennyi követelményét teljesíti, az osztályzatokat valamennyi elvégzett évfolyam bizonyítványába be kell jegyezni. Ha a tanuló nem teljesíti az iskolai évfolyam valamennyi követelményét, az egyes tantárgyak osztályzatát a törzslapján valamennyi elvégzett évfolyamon fel kell tüntetni, és a vizsga évében, ezt követően az adott évben kiállításra kerülő év végi bizonyítványba be kell írni.
+
+ 25. § (1) … osztályozó … vizsga esetén a vizsgát megelőző három hónapon belül kell a vizsgaidőszakot kijelölni. Az iskola osztályozó vizsgát a tanítási év során bármikor szervezhet. A vizsgák időpontjáról a tanulót a jelentkezéskor tájékoztatni kell.
+
+ (2) Az iskolában tartott tanulmányok alatti vizsga esetén az igazgató … engedélyezheti, hogy a tanuló az (1) bekezdés szerint előre meghatározott időponttól eltérő időben tegyen vizsgát.
+
+ 26. § (1) A tanulmányok alatti vizsgát háromtagú vizsgabizottság előtt kell letenni. Ha a tanulmányok alatti vizsgát az iskola szervezi, a vizsgabizottság az iskola pedagógusaiból áll.
+
+ (2) A tanulmányok alatti vizsga követelményeit, részeit (írásbeli, szóbeli, gyakorlati) és az értékelés rendjét a nevelőtestület a helyi tanterv alapján határozza meg, és a helyben szokásos módon nyilvánosságra hozza. A tanulmányok alatti vizsga - ha azt az iskolában szervezik - vizsgabizottságának elnökét és tagjait az igazgató … bízza meg. A tanulmányok alatti vizsgák lebonyolításakor figyelemmel kell lenni e rendelet 9. számú mellékletének rendelkezéseire.
+
+Jegyzőkönyvek
+
+ 4. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez
+
+ A nevelési-oktatási intézmények ügyintézésének, iratkezelésének általános szabályai és a tanügyi nyilvántartások
+
+ A nevelési-oktatási intézmény irattári terve, az iskolai záradékok és a kötelező nyomtatványok
+
+ Az iskola által kötelezően használt nyomtatványok
+
+ 13. Javítóvizsga-jegyzőkönyv
+
+ 14. Jegyzőkönyv a vizsgához
+
+ 23. Osztályozóív a vizsgához
+
+ 24. Osztályozóvizsga-jegyzőkönyv
+
+Záradékok
+
+ 4. számú melléklet a 11/1994. (VI. 8.) MKM rendelethez
+
+ A nevelési-oktatási intézmények ügyintézésének, iratkezelésének általános szabályai és a tanügyi nyilvántartások
+
+ A nevelési-oktatási intézmény irattári terve, az iskolai záradékok és a kötelező nyomtatványok
+
+Az iskolák által alkalmazott záradékok
+4. Tanulmányait évfolyamismétléssel kezdheti meg, illetve osztályozó vizsga letételével folytathatja.
+Bn., TI., N.
+4/A. ..... tantárgyból tanulmányait egyéni továbbhaladás szerint végzi. N., Tl., B.
+4/B. Mentesítve ..... tantárgyból az értékelés és a minősítés alól N., Tl., B.
+4/C. ..... tantárgy ..... évfolyamainak követelményeit egy tanévben teljesítette a következők szerint: .... N., Tl., B.
+5. Egyes tantárgyak tanórai látogatása alól az 19...../..... tanévben felmentve ............................................ miatt.
+N., TI., B.
+ Kiegészülhet:
+ osztályozó vizsgát köteles tenni
+6. Tanulmányait a szülő kérésére (szakértői vélemény alapján) magántanulóként folytatja. N., TI.
+7. Mentesítve a(z) [a tantárgy(ak) neve] ....................... tantárgy tanulása alól. N., TI., B.
+ Megjegyzés: A törzslapra be kell jegyezni a mentesítés okát is.
+8. Tanulmányi idejének megrövidítése miatt a(z) ................... évfolyam tantárgyból osztályozó vizsgát köteles tenni.
+N., TI.
+9. A(z) évfolyamra megállapított tantervi követelményeket a tanulmányi idő megrövidítésével teljesítette.
+N., TI., B.
+10. A(z) ....................... tantárgy óráinak látogatása alól felmentve .................... -tól ........................ -ig.
+N.
+ Kiegészülhet:
+ Osztályozó vizsgát köteles tenni.
+11. Mulasztása miatt nem osztályozható, a nevelőtestület határozata értelmében osztályozó vizsgát tehet.
+N., TI.
+13. A tanuló az .................. évfolyam követelményeit egy tanítási évnél hosszabb ideig, .................. hónap alatt teljesítette.
+N., TI.
+14. A(z) .................. tantárgyból javítóvizsgát tehet. N., TI., B.,
+ A javítóvizsgán ..................... tantárgyból .......................... osztályzatot kapott ....................... évfolyamba léphet.
+TI., B.
+15. A .................. évfolyam követelményeit nem teljesítette, az évfolyamot megismételheti.
+N., TI., B.
+16. A javítóvizsgán ................ tantárgyból elégtelen osztályzatot kapott.
+ Évfolyamot ismételni köteles. TI., B.
+17. A(z) ........................ tantárgyból .......... -án osztályozó vizsgát tett. N., TI.
+18. Osztályozó vizsgát tett. TI., B.
+19. A(z) .................. tantárgy alól ............... okból felmentve. TI., B.
+20. A(z) ................... tanóra alól .................. okból felmentve. TI., B.
+21. Az osztályozó (beszámoltató, különbözeti, javító-) vizsga letételére .............................-ig halasztást kapott.
+TI., B.
+22. Az osztályozó (javító-) vizsgát engedéllyel a(z) ................................ iskolában független vizsgabizottság előtt tette le.
+TI., B.
+
+
+ Alkalmazott rövidítések:
+
+Beírási napló Bn.
+Osztálynapló N.
+Törzslap TI.
+Bizonyítvány B.
+</code> \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/koncepcio.txt b/mayor-orig/mayor-wiki/wiki/data/pages/koncepcio.txt
new file mode 100644
index 00000000..d3ce013d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/koncepcio.txt
@@ -0,0 +1,31 @@
+
+====== A MaYoR rendszer áttekintése ======
+
+===== Avagy: mi az amit érdemes tudni a rendszer belső felépítéséről =====
+
+A MaYoR alapját egy keretrendszer képezi. Ennek a keretrendszernek a fő feladata a felhasználói azonosítás, no meg az oldalak megjelenítéséhez szükséges háttér biztosítása, beleértve a többnyelvűség és a különböző skin-ek kezelését.
+
+A keretrendszer önállóan is működő rendszer, a napló nélkül is életképes, bár alapvetően azért készült, hogy a naplót rá lehessen építeni (általános célú portál motorból van rengeteg, minden bizonnyal jobbak és szebbek is mint a mi rendszerünk).
+A keretrendszer háromféle hozzáférési szintet kezel: a nyilvános (public) oldalak azonosítás nélkül elérhetők (bár van lehetőség itt is azonosításra, ha valamiért szükséges), külön azönosítási folyamaton esnek át a szülők (parent),
+illetve az iskolával jogviszonyban levő diákok, tanárok (private).
+
+Az egyes hozzáférési szinteken külön szabályozhatjuk, hogy milyen felhasználói azonosítást követelünk meg, illetve azt, hogy az azonosítókat milyen háttér adatbázisban tároljuk. Jelenleg kétféle
+háttéradatbázist használhatunk: MySQL-t és OpenLDAP-ot. Az előbbi kezelése jóval egyszerűbb, könyen lekérdezhetők, módosíthatók benne az adatok, az utóbbi pedig - mivel a posixAccount séma kiterjeszéseként
+felépülő azonosítókat használ - felhasználható más szolgáltatások azonosítási folyamataiban (levelezés, ssh, ftp...)
+
+----
+
+A keretrendszerre épülő napló modulban eltárolunk sokféle adatot. Többek között a diákok, tanárok adatait is. Alaphelyzetben ezen adatok és a felhasznái adatok között nincs semmilyen kapcsolat. A gyakorlatban
+persze szeretnénk a tanároknak, diákoknak, szülőknek, titkársági dolgozóknak saját azonosítót adni, mellyel képesek a saját adataikhoz hozzáférni. A felhasználói adatok és a naplóbeli személyek közötti
+kapcsolat a következők szerint alakul ki:
+
+ * A privete hozzáférési szinten "titkárság" kategóriába tartozó felhasználók hozzáférnek a titkárság számára engedélyezett oldalakhoz
+ * A private hozzáférési szinten "tanár" kategóriába tertozó felhasználók esetén a rendszer a oktatási azonosító alapján próbál kapcsolatot találni a naplóban szereplő tanárok és a felhasználói
+azonosító tulajdonosa között. Ha az azonosítóhoz tartozó oktatási azonosító (studyId) attribútum megegyezik valamely tanát oktatási azonosító attribútumával (oId), akkor a rendszer őket azonosnak
+tekinti. Így elvileg nem kizárt, hogy egyes tanárokhoz ne legyen felhasználói azonosító (pl. már megszűnt a jogviszonya), az is lehet, hogy valamiért több azonosítót készítünk hozzá (no erre nem
+tudnék értelmes példát mondani, hogy mire lenne jó), és az is elődordulhat, hogy egy tanár kategóriájú azonosítóhoz nincs megfelelő tanár a naplóban (ez azért többnyire hiba, hacsak nem abból
+adódik, hogy több intézmény adatait kezeljük egy rendszerben).
+ * A private hozzáférési szinten "diák" kategóriába tartozó felhasznlók esetén a rendszer (a tanárokhoz hasonlóan) az oktatási azonosítót használja a naplóbeli diákoknak való megfeleltetéshez.
+ * A parent hozzáférési szinten bejelentkezett felhasználót a program a userAccount attripútum alapján próbálja megfeleltetni a naplóban eltárolt szülők valamelyikével. Itt tehát közvetlenebb
+a kapcsolat, direkt módon a felhasználói azonosítót rendeljük hozzá a szülőhöz.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/modulok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/modulok.txt
new file mode 100644
index 00000000..45799e91
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/modulok.txt
@@ -0,0 +1,8 @@
+====== Modulok ======
+
+A modulok bővítik ki a rendszer szolgáltatásait. A tervezett modulok:
+ * [[mayor-naplo]] - teljesértékű elektronikus napló
+ * [[mayor-portal]] - iskolai portál, statikus részekkel, hírbeküldéssel, kiírással
+
+A sor ízlés, igény és energia függvényében bővíthető (játékok, naptár, képtár, stb).
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo.txt
new file mode 100644
index 00000000..0b07d6cc
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo.txt
@@ -0,0 +1,11 @@
+
+====== MaYoR elektronikus napló ======
+
+Teljes értékű, web-felületű elektronikus napló.
+
+===== Mit tud? =====
+
+ * Több tanév párhuzamos kezelése
+ * Csoportbontások teljeskörű kezelése
+ * stb
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/azonositok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/azonositok.txt
new file mode 100644
index 00000000..7f394c80
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/azonositok.txt
@@ -0,0 +1,21 @@
+====== Diák azonosítók generálása ======
+
+Az oldal arra szolgál, hogy a naplóba felvett tanulói adatokból generálhassunk felhasználói azonosítókat.
+A generálás előtt minden diáknak meg kell adni az oktatási azonosítóját is.
+
+A felhasználói azonosítók a ''kezdoEvfolyam+Betujel+kezdoTanev'' (pl. 7a2008) diák kategóriába kerülnek. Ez a private hozzáférési szint háttéradatbázisának típusától függően a következőt jelenti:
+ * ldap: A fenti néven az ''ou=diak'' alá kerülnek az azonosítók.
+ * mysql: Az azonosítók a fenti nevű csoportba kerülnek.
+Ha szükséges, a program létrehozza az azonosítókat tartalmazó kategóriát, csoportot is.
+
+A megjelenő űrlap első sorában megadhatjuk a generálandó diákok indulási jelszavát. Ha ilyet nem adunk meg, akkor a program a diák vezetéknevének CRC32-es kódját adja meg első jelszóként
+(sikeres létrehozás után meg is jeleníti a generált jelszót a név melett a program).
+
+Alatta az osztály diákjai jelennek meg. A program megpróbál minden névhez azonosítót keresni az oktatási azonosító alapján. Ha talál pontosan egy ilyet, akkor azt jeleníti meg a második oszlopban, egyéb esetben egy beviteli mezőt, az új azonosító generálásához. Ha az oktatási azonosítóhoz egyáltalán nem talál felhasználói azonosítót a rendszer, akkor javasol egy felhasználói azonosítót. Ezt kétféle algoritmus alapján teszi:
+ * unix stylusú azonosító: csupa kisbetűs, maximum nyolc karakteres, ékezettelen azonosító a vezetéknév és a keresztnév első betűjének felhasználásával.
+ * Vezetéknév.Keresztnév alakú, ékezetes, kis- és nagybetűket is használó azonosító.
+Hogy melyiket használja a rendszer, azt a ''/var/mayor/config/private-conf.php'' állomány ''$AUTH['private']['unixStyleAccounts'] true illetve false értékével befolyásolhatjuk.
+
+A következő oszlopban arról látunk információt, hogy a program talált-e olyan azonosítókat, amik esetleg az adott diákhoz tartozhatnak. Itt jelennek meg a diákéval azonos oktatási azonosítóval rendelkező azonosítók, ha több is van belőlük - ez nyilvánvaló hibát jelez, ilyenkor a kiírt azonosítókat kell rendbe rakni. Megjelenhetnek itt olyan azonosítók is, melyekhez a diákkal azonos név tartozik (de az oktatási azonosító különbözik). Ilyenkor ellenőrizhetjük, hogy nem az oktatási azonosító esetleges elírásáról van-e szó.
+
+Jóváhagyás után a progam felveszi a megadott azonosítókat - ha az azonosító nem foglalt már.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/fillhaladasi.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/fillhaladasi.txt
new file mode 100644
index 00000000..6145214b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/fillhaladasi.txt
@@ -0,0 +1,23 @@
+====== Haladási napló visszamenőleges feltöltése ======
+
+Elsősorban tesztüzemben, a napló kipróbálási időszakában, vagy késedelmesen elkészült órarend esetén használhatjuk a visszamanőleges feltöltést. Ilyenkor az //orarendiOra// tábla szerint kerülnek a bejegyzések az //ora// táblába, az éves munkatervben beállított tanítási napokra.
+
+Használata egyszerű: a dátumok beállítása és az **OK** gomb után egy hosszabb-rövidebb listában jelzi, hogy mely napokra volt sikeres a betöltés.
+
+**__Tesztüzem:__**
+
+Általában a tanévek második féléve alkalmas a naplóval történő büntetlen ismerkedésre, próbálkozásra. Ebben az esetben - ha szeptemberig visszamenőleg feltöltjük a naplót, minden Kolléga töméntelen beíratlan órával fog rendelkezni. Ez a működést nem befolyásolja, de negatívan hathat a sok figyelmeztetés. Jó hír viszont, hogy az óraszámok - nagyjából - passzolni fognak.
+
+__Megoldás:__
+
+Egy ügyes SQL-paranccsal (a //naplo_[iskola]_[tanev]// adatbázisban) megszüntethetjük ezt az állapotot:
+
+ mysql> UPDATE ora SET leiras='Tesztüzem' WHERE dt<curdate();
+
+Így minden régi (mai nap előtti) órára tananyagként a 'Tesztüzem' került, a Kollégák nem kapnak beíratlan óra üzeneteket.
+
+**__Késedelmes órarend:__**
+
+Előfordul, hogy valamilyen ok miatt szeptember 1-jére (vagy a II. félév kezdetére) nem készül el az órarend. Ilyenkor "üresen" megy a napló, ám a bejegyzéseket pótolni kell. A gyakorlat szerint ez az időszak pár nap, legfeljebb egy hét. Elszámolások, illetve a korrekt naplóvezetés végett a Vezetőségnek ilyenkor **utólag** kell a helyettesítéseket, óraelmaradásokat, plusz órákat, stb. felvenni, ill. a speciális napokat rendezni.
+
+A késői betöltés éles üzemben azonnal szül egy újabb problémát: az órabeírás, hiányzásbeírási határidők lejár(hat)nak, így a Kollégák indokolatlan figyelmeztetéseket kaphatnak. Ebben az esetben a ///var/mayor/config/module-naplo/config_[iskola].php// állományban a szükséges határidőket ideiglenesen hosszabbítsuk meg, hogy minden Kolléga be tudja írni a hiányosságatit. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/import.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/import.txt
new file mode 100644
index 00000000..72d963fa
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/import.txt
@@ -0,0 +1,23 @@
+====== Adatok közvetlen betöltése az SQL adattáblákba ======
+
+Néha szükségünk lehet arra, hogy közvetlenül vigyünk be adatokat az egyes SQL táblákba. Természetesen ez a tevékenység veszélyeket is hordoz, hiszen mindenféle ellenőrzés nélkül, a logikai kapcsolatok, feltételek vizsgálata nélkül módosítjuk ilyenkor az adatbázist, ezért nagy körültekintéssel járjunk el, ha erre a lépésre szánjuk el magunkat. Fontos, hogy ismerjük a táblák szerkezetét (''/var/mayor/install/...'') és szerepét.
+
+Az import modul alkalmas új adatok felvitelére, illetve a már bent lévő rekordok egyes mezőinek frissítésére is.
+
+ - Töltsük fel a szerver ''/tmp'' könyvtárába az adatokat tartalmazó állományt. Fontos, hogy ez az állomány UTF-8 kódolású, tabulátorokkal tagolt szöveges állomány legyen. Előnyt jelent, ha a fájl első sorában a megfelelő mezőnevek szereplnek (rovatfej).
+ - Válasszuk ki a legördülő listából a táblát, melybe adatokat akarunk felvinni. A listában az intézményi adatbázis és az épp aktuális tanév adatbázisának táblái látszanak.
+ - A megjelenő input mezőbe adjuk meg az állomány elérési útját és nyomjuk meg az ''OK'' gombot. Ennek hatására a program beolvassa az input fájl első néhány sorát. Amennyiben a fájl első sorában a kiválasztott tábla mezőnevei találja, akkor ezeket kiválasztja és bejelöli a "van rovatfej" opciót.
+ - Ha a program nem ismeri fel az oszlopokat (hiányzó, vagy hibás fejléc miatt), akkor magunk választhatjuk ki oszloponként az egyes attribútumokat. Ha azt akarjuk, hogy a program valamelyik oszlop tartalmát figyelmen kívül hagyja a betöltés során, akkor ott ne válasszunk ki mezőt.
+ - Ellenőrizzük és szükség esetén javítsuk a "van rovatfej" opció tartalmát!
+ - A következő lépés a kulcs mező, illetve mezők megadása, erre szolgálnak az oszlopok tetején lévő jelölőnégyzetek. A kulcs a sorok egyedi azonosítására szolgál. A kulcsmezők alapján dől el, hogy egy importálandó adatsor új elemként kerül beszúrásra, vagy egy már meglévő rekord adatait frissítjük vele. Kulcsmezőt megadni kötelező.
+ - A beállítások után az ''OK'' gomb megnyomásával kezdetét veszi az importálás.
+
+Jó esetben egy információs üzentet kapunk a sikeres betöltésről. Rosszabb esetben csúnya hibaüzenetekbe botolhatunk. Ezek egyik oka az lehet, hogy a betöltendő adatok nem felelnek meg az adatbázis mezőkre vonatkozó megszorításoknak (külső kulcsok).
+
+
+==== Speciális import lehetőségek ====
+
+[[naplo:intezmeny:osztaly|Diákok adatainak betöltése osztályonként, osztályba sorolással]]
+
+[[naplo:intezmeny:tanar#tanarok_felvetele_adatallomanybol|Tanárok felvétele adatállományból]]
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/rpcprivilege.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/rpcprivilege.txt
new file mode 100644
index 00000000..c5c4ebea
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/rpcprivilege.txt
@@ -0,0 +1,35 @@
+
+====== RPC Jogosultságok beállítása ======
+
+Ezen az oldalon adhatunk meghatalmazást más MaYoR végpontoknak arra, hogy tőlünk - biztonságos, hitelesített csatornán keresztül - különféle adatokat kérdezzenek le.
+
+Az első ilyen éles szolgáltatásunk a Tantárgyfelosztás statisztikai összesítésének lekérdezhetősége, amire a fenntartónak lehet szüksége.
+
+===== Új végpont (node) hozzáadása =====
+
+A jogosultságokat adott végpont (node) adott felhasználójának (userAccount) adjuk. Új jogosultsági rekord felvételéhez tehát ezt a kettőt kell megadnunk:
+
+ - A végpontot a keretrendszer által ismert végpontok közül választhatjuk ki (Felhasználók/Szerver regisztráció/Ismert végpontok).
+ - A (távoli) felhasználó azonosítóját (userAccount) szövegként kell begépelnünk.
+
+A ''Felvesz'' gombra kattintva az új rekord megjelenik a listában. Alapértelmezés szerint két jogosultság beállításra kerül (''OMKod'', ''Jogosultság''), míg a harmadik tiltva van (''Tantárgyfelosztás'').
+
+===== Jogosultságok =====
+
+A jelenleg elérhető jogosultságok:
+
+==== OMKod ====
+
+Valójában nincs mögötte semmi... Mondjuk úgy: teszt - nyugodtan lehet kapcsolgatni, nem változtat semmit...
+
+==== Jogosultság ====
+
+A távoli felhasználónak engedélyezzük, hogy lekérdezze, mihez van nálunk joga.
+
+==== Tantárgyfelosztás ====
+
+A távoli felhasználónak engedélyezzük, hogy lekérdezze a mi rendszerünk naplójának Tantárgyfelosztás statisztikáját.
+
+===== További tervek =====
+
+A későbbiekben további szolgáltatások is megjelenhetnek, melyek engedélyezésére, illetve tiltására szintén itt lesz lehetőség
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/szemeszterek.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/szemeszterek.txt
new file mode 100644
index 00000000..229758f6
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/szemeszterek.txt
@@ -0,0 +1,24 @@
+====== Szemeszterek adatai ======
+
+Itt vehetjük fel a szemeszterekhez tartozó időszakokat. Az időszakok típusai a következők:
+
+ * zárás - Ebben az időszakban zárhatják le a szaktanárok a diákokat (tipikusan a konferenciát megelőző napok);
+ * bizonyítvány írás - Ebben az időszakban adhatnak magatartás/szorgalom jegyet az osztályfőnökök, illetve módosíthatnak zárójegyeket a vezetőség tagjai (tipikusan a konferencia után is tart néhány napig. A zárási és a bizonyítvány írási időszak kezdetének szigorúan meg kell egyeznie!);
+ * vizsga - ;
+ * előzetes tárgyválasztás - Ebben az időszakban jelentkezhetnek a tanulók a választható tankörökre - ilyenkor (még) nincs létszám minimum korlát;
+ * tárgyválasztás - Ebben az időszakban módosíthatják jelentkezésüket a diákok - de csak a maximális és minimális létszámkorlátok erejéig;
+ * tankörnévsor módosítás - Ebben az időszakban a tanárok módosíthatják saját tanköreik névsorát (tipikusan a tanév eleje);
+ * tankörnévsor módosítás - Ebben az időszakban van lehetőségük a szaktanároknak, hogy a saját tanköreikbe felvegyék a hozzájuk járó diákokat. Érdemes felhívni a szaktanárok figyelmét arra, hogy a felvétel során fokozottan ügyeljenek a tagok tankörhöz tartozó kezdő- és végdátumaira! Jellemzően tanév (és/vagy II. félév) elején használjuk.
+ * fogadóóra jelentkezés - Ebben az időszakban jelentkezhetnek online a szülők fogadóórára.
+ * tanmenet leadás - Ebben az időszakban lehet tanmeneteket rendelni az egyes tankörökhöz. Egy lehetséges időszak a szeptember hónap erre a célra.
+
+===== Új időszak felvétele =====
+
+Első lépésként válasszuk ki az érintett szemesztert!
+Ez után új időszak felvételéhez válasszuk ki az időszak kezdő és záródátumát (zárt intervallumként!), majd az időszak típusát, végül nyomjuk meg az ''OK'' gombot!
+
+===== Időszak törlése =====
+
+Jelöljük meg a törlendő időszakokat a típus előtti jelölőnyégyszögek segítségével, majd nyomjuk meg az ''Törlés'' gombot!
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/tanevek.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/tanevek.txt
new file mode 100644
index 00000000..dd2cbbf8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/admin/tanevek.txt
@@ -0,0 +1,82 @@
+====== Tanévek kezelése ======
+
+===== Új tanév felvétele =====
+
+Új tanév felvételéhez először a tanév jelét kell felvenni. Ez a tanév első tanítási napjának éve legyen.
+
+A második lépés a tanév szemesztereinek (féléveinek) felvétele. Egy szemesztert a szemeszter első és utolsó tanítási napjának megadásával definiálhatunk (tehát zárt intervallumként adjuk meg
+a szemeszter időszakát). Egy szemeszter három féle státuszban lehet:
+
+ - tervezett - Azt jelenti, hogy hivatkozhatunk erre a tanévre, de még nem tartozik hozzá adatbázis.
+ - aktív - épp használatban lévő, saját adatbázissal rendelkező tanév (a saját adatbázisban tároljuk például a konkrét hiányzások adatait, vagy az év közben szerzett jegyeket és még sok egyéb, csak az adott tanévhez kapcsolódó adatot).
+ - lezárt - egy adatbázissal rendelkező, de már nem módosítható tanév.
+
+A szemeszterek új tanév létrehozásakor tervezett státuszúak lesznek. A tanév megnyitásával, illetve lezárásával kerülnek ''aktív'', illetve ''lezárt'' állapotba.
+
+===== Tanév szemeszterei =====
+
+Ha egy konkrét, már létező tanévet választunk ki, akkor lehetőségünk van a tanév szemesztereinek módosítására (pontosabban kezdő és záró dátumainak módosítására) és törlésére.
+**Vigyázzat!** Ez a funkció nem változtatja meg a [[naplo:tanev:munkaterv|éves munkaterv]]et, így az első és utolsó tanítási nap megváltoztatása esetén a munkaterv is hibás lesz.
+Jobb tehát ezzel a lehetőséggel csak ''tervezett'' státuszú tanév esetén élni.
+
+===== Tanév megnyitása =====
+
+Úgy is mondhatnánk: a tanév aktívvá tétele. Két esetben használhatjuk:
+
+ - Ha a tanév még csak tervezett státuszban van, akkor (a megfelelő MySQL felhasználói azonosító és jelszó ismeretében) aktívvá tehetjük, létrehozva a szükséges tanév adatbázist.
+ - Ha egy tanévet korábban lezártunk, de valamilyen módosítást mégis el kell végeznünk rajta, akkor újra megnyithatjuk - ekkor nincs szükség MySQL azonosítóra és jelszóra.
+
+===== Tanév lezárása =====
+
+Egy aktív tanévet akkor zárhatunk le, ha
+ - A tanév utolsó tanítási napján már túl vagyunk
+ - Az általunk megadott "tanév lezárás dátum" is a tanév utolsó tanítási napja utánra esik. Alaphelyzetben a program ezt a dátumot az utolsó tanítási nap után 7 nappal határozza meg, de szabadon változtathatunk a dátumon.
+
+A tanév lezárásához szorosan kapcsolódik néhány - innen közvetlenül nem elérhető - feladat, funkció:
+ * A befejezett tanév [[naplo:nyomtatas:haladasinaplo|haladási-]] és [[naplo:nyomtatas:osztalyozonaplo|osztályozónaplóit]] nyomtassuk ki minél hamarabb!
+ * Még fontosabb az adatok mentése és archiválása
+ * A következő év indításához érdemes a felmenő [[naplo:intezmeny:tankor|tankörök]] következő évi óraszámait rögzíteni!
+ * A már tudható osztály váltásokat végezzük el a lezárás előtt.
+
+A tanév lezárás több lépésből áll. Ezeket a lépéseket külön-külön is végrehajthatjuk egészen addig, amíg a tanév státuszát ''lezárt''-ra nem állítjuk (utolsó pont). Ezek után már csak akkor férhetünk a tanév lezárás lépéseihez, ha újra megnyitjuk a tanévet.
+
+==== Végzős tanulók jogviszonyának lezárása ====
+
+Végzősnek tekintünk egy tanulót, ha az osztályai közül a legkésőbb lezárulónak végző tanéve épp a kiválasztott tanév.
+ a tanulói az in
+Előfordulhat, hogy egy diák épp végez egy osztályban, de tovább fog menni egy másik osztályba. Ha az új osztályba előre felvesszük, akkor a program nem fogja végzősnek tekinteni.
+
+Az is megtörténhet, hogy egy intézményben egy teljes osztályról tudható, hogy a tanulói mind jogviszonyban maradnak az iskolával (egy másik osztályban) - ilyen lehet például egy nyelvi előkészítőt végző osztály. Ilyen esetek miatt van lehetőség arra, hogy megjelöljük azokat az osztályokat melyek diákjai valóban elhagyják az intézményt.
+
+A tanulói jogviszony lezárása maga után vonja a következőket is:
+
+ * A tanulót a megadott dátummal kiléptetjük a tanköreiből
+ * A tanulót a megadott dátummal kiléptetjük az osztályaiból
+
+(Ha év közben [[naplo:intezmeny:diak|szüntetjük meg egy diák jogviszonyát]], akkor a megadott dátum utáni hiányzások és jegyek törlését is elvégzi a program, de jelen esetben csak a tanév vége utáni dátummal lehet lezárni a tanévet.)
+
+
+==== Végzős osztályok lezárása (tagok és osztályfőnökök kiléptetése) ====
+
+Tanév lezárásakor a végzős osztályokat le kell zárni. Ennek lépései:
+
+ * Az osztály tagjainak kiléptetése az adott dátummal (függetlenül attól, hogy végzősek-e a diákok)
+ * Az osztály osztályfőnöki megbizatásainka lezárása az adott dátummal.
+ * Az érintett osztályfőnökök osztályfőnöki munkaközösségből történő kiléptetése, ha más osztályban nem osztályfőnökök
+
+==== A megszűnt jogviszonyú tanulók és szüleik felhasználói azonosítóinak törlése ====
+
+A program lekérdezi a megszűnt jogviszonyú tanulókat (nem csak a most lezártakat!) és ezek szüleit, majd törli a hozzájuk tartozó felhasználói azonosítókat.
+**Vigyázat!** Az egyéb ilyenkor szükséges tennivalókat (pl. home könyvtárak mentése, törlése) a program nem végzi el!
+
+A szülők esetén a program nem törli azokat a szülői azonosítókat, mely hozzá vannak rendelve valamely jogviszonyban lévő, vagy felfüggesztett jogviszonyú
+tanulóhoz (egész pontosan: statusz in ('jogviszonyban van','magántanuló','vendégtanuló','jogviszonya felfüggesztve')). Az accountok törlése mellett a program
+a ''szulo'' tábla ''userAccount'' mezőjét is ''NULL'' értékre állítja.
+
+==== Tanév lezárása ====
+
+Ezt a lépést akkor érdemes megtenni, ha a többi lépéssel már elkészültünk. Két funkciója van:
+
+ * A tanév adatbázisból lekérdezi a diákok hiányzási adatait (összes igazolt/igazolatlan hiányzások száma, késések száma, összesített hossza percben szemeszterenként) és eltárolja az intézményi adatbázisba.
+ * A tanév státuszát ''lezárt''-ra módosítja.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/csoportok.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/csoportok.txt
new file mode 100644
index 00000000..928bf75e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/csoportok.txt
@@ -0,0 +1,27 @@
+====== Csoportok áttekintése ======
+
+A felhasználók jogosultságai a csoporttagságuktól függnek. A telepítés során alapértelmezett csoporttagságok jönnek létre. Ha valakinek több/kevesebb jogot akarsz, be/ki kell rakni egy új csoprotba/ból.
+
+ * legkevesebb joggal a **diák** rendelkezik. Csak és kizárólag a saját dolgait látja, még a testvért se, de anonim statisztikát (tantárgyi- és osztályátlagok, hiányzott órák száma, kitűnők, jelesek, bukások száma) láthat az egész iskoláról. Csak olvashat mindent, az Üzenőbe és a Hangyába írhat, kérdőívet tölthet ki (ha van), hírt küldhet be.
+
+ * kicsivel tágabb joggal rendelkezik a **szülő**. Csak a saját gyerekét/eit látja, és anonim statisztikát (tantárgyi- és osztályátlagok, hiányzott órák száma, kitűnők, jelesek, bukások száma) láthat az egész iskoláról. Csak olvashat mindent, az Üzenőbe és a Hangyába írhat, kérdőívet tölthet ki (ha van), hírt küldhet be, valamint jelentkezhet online fogadóórára.
+
+ * **tanár** (szaktanár): Csak a saját óráit (és a helyettesített órákat) írhatja be, csak ott tud hiányzókat, későket beírni, csak a saját tanköreiben adhat osztályzatot, csak a saját tanköreiben adhat bizonyítványjegyet, de mindent diák minden dolgát látja, névre szólóan. Az Üzenőbe és a Hangyába írhat, kérdőívet tölthet ki (ha van), hírt küldhet be.
+
+ * **osztályfőnök**: Ugyanaz a jog, mint a (szak)tanáré, de a saját osztályában a megadott határidőkig hiányzásokat egészíthet ki, igazolhat, félévi és év végi magatartás-szorgalomjegyet adhat. Nem módosíthatja a diákok adatait, az a titkárság feladata.
+
+ * **vezetőség**: Szinte mindenhez hozzáfér, a megadott határidőig (ZARASI_HATARIDO). Természetesen mindent lát, más menük is megjelennek, mint a többi felhasználónak, pl. Haladási elmaradások, Elszámolás, stb. Adhat igazgatói / nevelőtestületi dicséretet, intőt rovót, igazolhat igazgatói igazolással (de pl. osztályfőnökivel nem).
+
+ * **hírekadmin**: a beküldött híreket szerkesztheti, nyilvánossá teheti ([[portal:hirek:hirekadmin|Hírek]]).
+
+ * **üzenőadmin**: látja az összes üzenetet, törölheti őket.
+
+ * **naplóadmin**: a naplóban a legmagasabb jogosultsággal bíró felhasználói csoport. Vehet fel intézményt, tanévet, időszakokat, adhat a tanulóknak azonosítót, importálhat adatokat közvetlenül az egyes táblákba, betölthet órarendet,a félévi/év végi jegyeket módosíthatja, stb... Egyes tevékenységek az ő esetében is határidőhöz kötöttek azért...
+
+ * **diákadmin**: a diákok jelszavának cseréjhez van jussa. Megkönnyítendő szegény admin életét, pl. az infótanároknak meg lehet adni ezt a jogot... :-)
+
+ * **titkárság**: módosíthatja a diákok adatait, tanév közben érkező, távozó dákok be-kiléptetése, jogviszonyok módosítása a feladata.
+
+ * **mayoradmin**: az alapértelmezett naploadmin csoportban is benne lévő felhasználó.
+
+A jogosultságokkal csínján bánjunk! Ha indokolatlanul a kelleténél nagyobbra nyitjuk a hozzáférést, csak több gubanc lesz... (pl. az osztályfőnökök szeretnék a diákok adatait (lakcím, telefonszám, stb.) módosítani, megoldható, de ezzel nemcsak ezekhez fognak hozzáférni, hanem pl. jogviszonyokhoz, szülői hozzárendelésekhez... Óhatatlanul is, de hibalehetőségek tárházát nyitjuk meg - a végén úgyis a mayoradmin-nak kell mindent rendbetenni... :-D
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/ertekeles/kerdoivbetoltes.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/ertekeles/kerdoivbetoltes.txt
new file mode 100644
index 00000000..e9b26c35
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/ertekeles/kerdoivbetoltes.txt
@@ -0,0 +1,146 @@
+====== Értékelő kérdőívek betöltése ======
+
+A kérdőív felvétele két lépésben történik. Az első lépésben adjunk címet a kérdőívnek, jelöljük ki kezdő- év végdátummal, hogy mely időszakban lehet majd kitölteni a kérdőíveket. Meg kell adni ezek után azt, hogy kiknek kell majd kitöltenie a kérdőívet (címzettek). Végül egyszerű szöveges formában adjuk meg a kérédseket a rájuk vonatkozó válaszokkal a következő formában:
+
+ Kérdés 1.
+ Válasz 1/1.
+ Válasz 1/2.
+ ...
+ Válasz 1/n.
+
+ Kérdés 2.
+ Válasz 2/1.
+ Válasz 2/2.
+ ...
+ Válasz 2/n.
+
+ ...
+
+
+====== Hogy néz ki belülről ======
+
+A kérdőív kezeléshez több táblát is használunk. Ezek a tanév adatbázisában vannak:
+
+ mysql> use naplo_fasori_2008;
+ mysql> show tables like 'kerdoiv%';
+ +-------------------------------------+
+ | Tables_in_naplo_vmg_2008 (kerdoiv%) |
+ +-------------------------------------+
+ | kerdoiv |
+ | kerdoivCimzett |
+ | kerdoivKerdes |
+ | kerdoivMegvalaszoltKerdes |
+ | kerdoivValasz |
+ | kerdoivValaszSzam |
+ +-------------------------------------+
+ 6 rows in set (0.00 sec)
+
+Nézzük, hogy melyik tábla mire való:
+
+===== kerdoiv =====
+
+Ez fogja össze egy egységgé a kérdések sorát. Alapvetően egy szöveges cím és a kérdőív kitöltésére szánt időszak kezdő és végdátuma szerepel itt.
+
+ mysql> explain kerdoiv;
+ +-----------+------------------+------+-----+---------+----------------+
+ | Field | Type | Null | Key | Default | Extra |
+ +-----------+------------------+------+-----+---------+----------------+
+ | kerdoivId | int(10) unsigned | NO | PRI | NULL | auto_increment |
+ | cim | varchar(64) | NO | | | |
+ | tolDt | datetime | NO | | | |
+ | igDt | datetime | NO | | | |
+ +-----------+------------------+------+-----+---------+----------------+
+
+
+===== kerdoivCimzett =====
+
+Ebben a táblában mondjuk meg, hogy egy adott kérdőív kinek szól, kiknek kell kitöltenie. Mivel többféle címzett lehet (tanár, diák, szülő, tankör, stb), ezért eltároljuk a címzett típusát is az azonosítója mellett (pl 135-ös azonosítójú diák). A 0 azonosítóval jelöljük, ha az adott típus összes azonosítójának címezzük a kérdőívet. Mivel egy kérdőívhez így több címzettet adhatunk meg, lehetségessé válik, hogy ugyanazt a kérdőívet kitöltessük tanárokkal, diákokkal, szülőkkel is akár.
+
+A speciális címzett típusok (tankor, munkakozosseg, osztalySzulo, stb) arra utalnak, hogy az adott "csoport" tagjai töltik ki a kérdőívet, ami az adott csoportra vonatkozik. Az első például a tankör tanárának értékelése lehetm a második a munkaközösségvezetői munkát értékelő kérdőív, a harmadik példa lehet a szülők véleménye az osztályról, osztályfőnökről. Áttételesen a címzettek ilyenkor is szülők, diákok, vagy tanárok, de lehet, hogy egy-egy személy több példányban tölti ki az adott kérdőívet - más-más célcsoportra vonatkoztatva (több tankör értékelése).
+
+ mysql> explain kerdoivCimzett;
+ +--------------+-------------------------------------------+------+-----+---------+-------+
+ | Field | Type | Null | Key | Default | Extra |
+ +--------------+-------------------------------------------+------+-----+---------+-------+
+ | kerdoivId | int(10) unsigned | NO | PRI | | |
+ | cimzettId | int(10) unsigned | NO | PRI | | |
+ | cimzettTipus | enum('diak','szulo','tanar','tankor','tankorSzulo','munkakozosseg','osztaly','osztalySzulo')
+ | NO | PRI | diak | |
+ +--------------+-------------------------------------------+------+-----+---------+-------+
+ 3 rows in set (0.00 sec)
+
+===== kerdoivKerdes =====
+
+Ez tényleg egyszerű - az adott kérdőívhez tartozó kérdések.
+
+ mysql> explain kerdoivKerdes;
+ +-----------+------------------+------+-----+---------+----------------+
+ | Field | Type | Null | Key | Default | Extra |
+ +-----------+------------------+------+-----+---------+----------------+
+ | kerdesId | int(10) unsigned | NO | PRI | NULL | auto_increment |
+ | kerdoivId | int(10) unsigned | NO | MUL | | |
+ | kerdes | varchar(255) | NO | | | |
+ +-----------+------------------+------+-----+---------+----------------+
+ 3 rows in set (0.00 sec)
+
+===== kerdoivValasz =====
+
+Ez is elég egyértelmű - egy adott kérdésre adható válaszok.
+
+ mysql> explain kerdoivValasz;
+ +----------+------------------+------+-----+---------+----------------+
+ | Field | Type | Null | Key | Default | Extra |
+ +----------+------------------+------+-----+---------+----------------+
+ | valaszId | int(10) unsigned | NO | PRI | NULL | auto_increment |
+ | kerdesId | int(10) unsigned | NO | MUL | | |
+ | valasz | varchar(255) | NO | | | |
+ +----------+------------------+------+-----+---------+----------------+
+ 3 rows in set (0.00 sec)
+
+
+===== kerdoivValaszSzam =====
+
+Ez a végeredmény. Az adott címzettre vonatkozóan melyik válaszra hány szavazat érkezett. A címzett adja meg tehát, hogy egy szavazatszám melyik tanár, vagy osztály, vagy akármi értékelésére vonatkozik.
+
+ mysql> explain kerdoivValaszSzam;
+ +--------------+---------------------------------------+------+-----+---------+----------------+
+ | Field | Type | Null | Key | Default | Extra |
+ +--------------+---------------------------------------+------+-----+---------+----------------+
+ | valaszId | int(10) unsigned | NO | PRI | NULL | auto_increment |
+ | cimzettId | int(10) unsigned | NO | PRI | | |
+ | cimzettTipus | enum('diak','szulo','tanar','tankor','tankorSzulo','munkakozosseg','osztaly','osztalySzulo')
+ | NO | PRI | diak | |
+ | szavazat | int(10) unsigned | NO | | 0 | |
+ +--------------+---------------------------------------+------+-----+---------+----------------+
+ 4 rows in set (0.00 sec)
+
+
+===== kerdoivMegvalaszoltKerdes =====
+
+Ez a tábla szolgál arra, hogy ne lehessen egy embernek egy kérdésre többször szavaznia. Itt tároljuk el, hogy ki (felado), melyik kérdésre (kerdesId), mire vonatkozóan (cimzett) adott már le szavazatot.
+
+ mysql> explain kerdoivMegvalaszoltKerdes;
+ +--------------+---------------------------------------------+------+-----+---------+-------+
+ | Field | Type | Null | Key | Default | Extra |
+ +--------------+---------------------------------------------+------+-----+---------+-------+
+ | feladoId | int(10) unsigned | NO | PRI | | |
+ | feladoTipus | enum('diak','szulo','tanar') | NO | PRI | diak | |
+ | kerdesId | int(10) unsigned | NO | PRI | | |
+ | cimzettId | int(10) unsigned | NO | PRI | | |
+ | cimzettTipus | enum('diak','szulo','tanar','tankor','tankorSzulo','munkakozosseg','osztaly','osztalySzulo')
+ | NO | PRI | diak | |
+ +------------------------------------------------------------+------+-----+---------+-------+
+ 5 rows in set (0.00 sec)
+
+Ami már működik:
+Fel lehet venni kérdőívet egyszerű szöveges formában, megadva, hogy
+kik a címzettjei, és mettől meddig érvényes. Ez azt jeleni tehát, hogy
+kitöltjük a kerdoiv, kerdoivCimzett, kerdoivKerdes, kerdoivValasz
+táblákat.
+Ha valaki belép a Értékelés menüpontba és van rá vonatkozó, érbényes
+kérdőív, akkor az megjelenik, kitölthető (változik a kerdoivValaszSzam
+és kerdoivMegvalaszoltKerdes tartalma).
+
+Tehát a rendszer arra alkalmas, hogy begyűjtse az adatokat, de nem
+csinál belőle semmilyen összesítést, azt a fenti szerkezet szerint
+kézzel kell végezni. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/export/bizonyitvany.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/export/bizonyitvany.txt
new file mode 100644
index 00000000..bbf8cd6e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/export/bizonyitvany.txt
@@ -0,0 +1,12 @@
+
+====== Bizonyítvány adatok exportálása ======
+
+Válasszuk ki először a szemesztert, majd az osztályt!
+
+A program ezek után lekérdezi az osztály tagjainak adatait és adott szemeszterhez tartozó zárójegyeit, melyeket egy
+tabulátorokkal tagolt szöveges állományba rak, soronként egy-egy diák adatát.
+
+A telepítési könyvtár ''export/module-naplo/'' alkönyvtárában szabálozható, hogy mely diákattribútumok kerüljenek a file-ba.
+A teljes attribútum lista nagyon hosszú, megtalálható az ''export/module-naplo/draft/bizonyitvany.php'' állományban. Az alapértelmezett
+attribútum lista az ''export/module-naplo/default/bizonyitvany.php'' állományban található. Saját beállításainkat az
+''export/module-naplo/<intézmény rövid neve>/bizonyitvany.php'' állományba helyezhetjük el.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/fogadoora.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/fogadoora.txt
new file mode 100644
index 00000000..2bb89b33
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/fogadoora.txt
@@ -0,0 +1,22 @@
+====== Fogadóóra ======
+
+Gyakori probléma az iskolákban, hogy a szaktanárok fogadóóráján káosz alakul ki: egyes tanárok ajtaja előtt kígyózó sorok várnak, mások viszont "üresjáratban" vannak. Az is előfordul, hogy egy-egy beszédesebb szülő vagy tanár elcsúszik a rá kiszabott idővel, így a többi szülő kénytelenek várakozni.
+
+Ezt a helyzetet (is) igyekszik a napló humánusabbá tenni: a szülőknek lehetőségük van a gyermeküket tanító tanárokhoz __előre megadott dátumra__, __előre megadott időpontra__ időpontot foglalni (akárcsak a különféle "nagy" hivatalokban...)
+
+Első lépés, hogy meg kell állapítani, mennyi is legyen a fogadóórán egy vizit hossza (alapértelmezésben 10 perc). A megadott érték 60 valamely pozitív osztója kell legyen! Módosítani a ///var/mayor/config/module-naplo/config_[iskolarovidneve]// állományban lehet.
+
+Ezek után a //mayoradmin// vagy a //vezetőség// a **Napló/Fogadóóra** menüpontban kijelöli a soron következő fogadóóra időpontját, időtartamát (tanáronként állítható) és helyszíneit.
+
+Fontos adminisztrátori teendő még a „Fogadóóra jelentkezés” időszak létrehozása a Napló/Admin/Szemeszterek menüpontban. Ez az az időszak, amikor a szülőknek lehetőségük van az időpontfoglalásra. Az időszak végének meghatározását jól fontoljuk meg, mivel az időszak lejárta után a szülő nem tudja megnézni, hogy kihez mikorra jelentkezett!
+
+A "Fogadóóra jelentkezés" időszakban a szülők a saját felületükön a **Napló/Fogadóóra** menüben választhatják ki, hogy mely időpontra, melyik (gyereküket tanító) tanárhoz foglalnak maguknak időpontot. A már lefoglalt vizitek passzívak, így a keveredés kizárva.
+
+A tanárok a saját felületükön a **Napló/Fogadóóra** menüpontban már láthatják, ki jelentkezett be hozzájuk (és természetesen mely időpontra). A szülők neve mögött szerepel a gyerek neve is, a könnyebb azonosíthatóság kedvéért.
+
+A fogadóóra tényleges időpontját elérve a lista nyomtatható:
+ * a tanár és a szülő a saját felületén a saját beosztását;
+ * a mayoradmin vagy a vezetőség az összes tanár fogadóóra-rendjét közvetlenül vagy PDF-be
+tudja nyomtatni (utóbbit pl. a terem ajtókra ki lehet függeszteni).
+
+A fenti módszert követve gyorsabb, követhetőbb a fogadóórák rendje és lezajlása, jobban szabályozhatók az elhúzódó, késő estékbe nyúló megbeszélések, a tanárok "lyukas", be nem táblázott időpontjaikban pedig fogadhatják a be nem jelentkezett szülőket. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elmaradas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elmaradas.txt
new file mode 100644
index 00000000..2a806bba
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elmaradas.txt
@@ -0,0 +1,16 @@
+====== Haladási elmaradások ======
+
+A //vezetőség// által a tanárok adminisztratív fegyelmének ellenőrzését hivatott szolgálni a **Napló/Haladási napló/Haladási elmaradások** menüje.
+
+Ebben a //vezetőség// tagjai figyelemmel tudják kísérni a Haladási napló elmaradásait (csak az óra témáját, illetve a beírás megtörténtét, de a hiányzások bejegyzését nem!).
+A napló a \\
+''/var/mayor/config/module-naplo/config-[iskola_rovid_neve].php'' állományban definiált ''_HALADASI_HATARIDO'' alapján különbözteti meg (szín szerint is) a
+ * **beírandó** és a
+ * **lezárt**
+státuszokat.
+
+A **beírandó** órák azok, amik bár elmúlt napokhoz tartoznak, még beírhatók, míg a **lezárt**ak már
+csak a //vezetőség// (vagy a //naploadmin//) nevében belépve pótolhatók - némi ejnye-bejnye után... :-)!
+
+
+A program barna színnel jelöli azokat, akinek van **lezárt** státuszú órája, zöldel pedig azokat, akiknek csak beírt és **beírandó** órája van.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elszamolas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elszamolas.txt
new file mode 100644
index 00000000..04fdcfb7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/elszamolas.txt
@@ -0,0 +1,47 @@
+====== Elszámolás ======
+
+A //vezetőség// tagjai a **Napló/Haladási napló/Elszámolás** menüt használhatják a különféle havi-, kéthavi- túlóra- és egyéb elszámolásokhoz.
+
+A dátum mezőket értelemszerűen kitöltve a táblázatban az adott időintervallumra vonatkozóan látszik a tanárok által beírt, azaz adminisztrált
+(tehát minden szempontból letudott :-D) óra, helyettesítés, összevonás, stb.
+
+A táblázat oszlopai a következő adatokat tartalmazzák:
+
+Lekötött / normál: A tanár órarendben szereplő saját (megtartott) tanórái.
+
+Lekötött / normál máskor: A tanár saját tanórái, amiket nem az órarend szerinti szokásos időben tartott meg. (áthelyezett órák)
+
+Lekötött + fennmaradó / helyettesítés: Azok az órák, amikor a tanár "szakszerű" helyettesítést végzett. (Tehát olyan tárgyú órát tartott, amihez van diplomája.)
+
+Fennmaradó / felügyelet: Azok az órák, amikor a tanár felügyelet jellegű helyettesítést végzett. (Tehát olyan tárgyú órát tartott, amihez nincs diplomája.)
+
+Fennmaradó / egyéb: A "rózsaszínű" elfoglaltságok, amiket a tanár maga írt be.
+
+Σ: Az eddigiek összege.
+
+Nem számolt / összevonás: Azok az órák, amikor a tanár összevonás jellegű helyettesítést végzett. (Összevont csoportnak tartott "szakszerű" tanórát.)
+
+Az összevonások esetén a tanár saját órája normál óraként jelenik meg a listában - így ha a megtartott órák számát akarjuk megtudni, akkor az összevonást nem kell beleszámítani. Az adat csak azért kerül megjelenítésre, hátha ezért a többlet teherért valamilyen plusz bért számol el a fenntartó. ;-)
+
+Heti óraszám órarend alapján: Ez a szám állandónak tekinthető, az elmaradó és plusz órák nem befolyásolják. (Csak az órarend megváltoztatása.)
+
+Előírt heti munkaóra N napra vetítve: Az oldal tetején beállított két dátum közötti intervallumban lévő tanítási napok száma (N) és az ennyi tanítási napra kiszámított, jogszabály szerinti határ-óraszámok. Ezek a számok különféle színű hátteret kaphatnak:
+
+Kék háttér: Az előírt minimális lekötött munkaideje sincs meg. (55% alatt - az első színezett oszlopban lévő szám alatt van az óraszáma.)
+
+Zöld háttér: A lekötött óraszáma megvan, de még nyugodtan terhelhető. (55%-65% között, tehát a második színezett oszlopban szereplő óraszámot nem haladja meg.)
+
+Sárga háttér: A lekötött órák felett még a kötött munkaidőből is adminisztrált órákat - ez lenne a normál eset. (De 80%-ot, azaz a harmadik színezett oszlopban lévő értéket nem haladja meg az óraszáma).
+
+Piros háttér: Túlterhelt, a törvényileg megengedett óraterhelésnél többet adminisztrált (80% feletti óraszám). Ebből persze lehet, hogy több órát nem a vezetőség írt elő a kollégának, tehát nem feltétlen jelent ez szabálytalan foglalkoztatást - benne lehet a maradék 20%, a
+kötetlen munkaidő egy része vagy egésze is.
+
+De azért a piros az egy komoly figyelmeztetés kellene legyen. Ha meg valakinél a 100%-ot meghaladó érték látszik, akkor kétség kívül túl van foglalkoztatva (feltéve, hogy az adminisztrációt a valóságnak megfelelően vezeti az illető).
+
+Az ideális állapot tehát, ha sárga színt lát a vezetőség és az összóraszám a harmadik, 80%-os óraszámmal egyezik meg.
+
+A táblázat a felületről nem exportálható, de egyszerű kijelöléssel, majd másolással ízlés szerint választott táblázatkezelőbe
+(pl. [[http://hu.openoffice.org/about-downloads.html|OpenOffice.org Calc]])
+szépen beilleszthető, és abban képletekkel, függvényekkel, diagramokkal további használatra alkalmassá tehető.
+
+Fontos, hogy a táblázat egészét jelöljük ki a másolás előtt. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/haladasi.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/haladasi.txt
new file mode 100644
index 00000000..d0624aca
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/haladasi.txt
@@ -0,0 +1,16 @@
+====== Haladási napló ======
+
+A haladási naplóban egy tanár, osztály vagy diák, esetleg egy tankör óráinak adatait tekinthetjük meg. A táblázat általában egy-egy hét napjait sorolja fel (kivéve ha egy tankör óráit nézzük meg - ilyenkor a tankör összes óráját megjeleníti a rendszer), ezeken belül láthatjuk az aznapi órák adatait:
+ * az adott napon hanyadik óra
+ * melyik tankör számára
+ * az óra típusa (normál, helyettesített, felügyelt, ...)
+ * az órát tartó tanár
+ * az adott óra óraszáma
+ * az óra anyaga
+ * továbblépési lehetőség a hiányzók beírására
+
+===== Óra beírása =====
+
+Az óra anyagát a megfelelő határidő lejártáig az órát tartó tanár írhatja be. Ha egy tankörhöz több tanár is tartozik, akkor a tanár átváltható. Ha egy tankör beletartozik egy tankör csoportba, akkor a tankörcsoport tagjai között is válthatunk (pl. magyar irodalom, vagy magyar nyelv óra közt szeretnénk váltani).
+
+Az órák anyagának beírása után valamelyik gomb megnyomásával rögzíthetjük az adatokat. Ezt a lépést ne hagyjuk ki :). \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/minuszora.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/minuszora.txt
new file mode 100644
index 00000000..b74588c2
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/minuszora.txt
@@ -0,0 +1,16 @@
+====== Óra elmaradás ======
+
+Az oldal arra való, hogy egy adott napon tanár, vagy osztály szerint kiválasztott órákat állíthassunk elmaradó státuszba.
+
+Az előbbi akkor lehet hasznos, ha a tanár nem hiányzik egész nap, akár még helyettesítésre is ki van írva más órában, de az egyik órája valamilyen okból elmarad. Ha ezt a ''Helyettesítés'' alatt akarjuk állítani, akkor először a tanárt hiányzóként kell jelölnünk, ezzel az összes óráját ''elmarad'' státuszúvá tesszük elveszítve az esetleges korábbi helyettesítési kiírásait.
+
+Az osztály szerinti óra elmaradás akkor jön jól, ha egy osztály valamilyen program miatt nem vesz részt a tanításon, vagy annak egy részén (osztálykirándulás, színház látogatás, orvosi vizsgálat, stb).
+
+===== Az elmaradó óra kiválasztása =====
+
+ * válasszunk ki egy dátumot
+ * majd egy tanárt, vagy osztályt
+ * megjelenik a tanár, vagy osztály adott dátum szerinti órarendje (pontosabban haladási naplója)
+ * az az óra tankörének neve előtti jelölőnégyzettel jelölhetjük meg az elmaradó órát, vagy órákat
+ * az ''OK'' gombbal jóváhagyhatjuk a változásokat
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/osszevonas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/osszevonas.txt
new file mode 100644
index 00000000..565ab893
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/osszevonas.txt
@@ -0,0 +1,31 @@
+====== Összevonás ======
+
+Bizonyos esetekben a [[helyettesítés]] oldalon nehéz kiírni az összevonásokat. Ezek kezelésére született ez az oldal.
+
+===== A probléma bemutatása - Példa =====
+
+Tegyük fel, hogy a 10.a osztályban Gipsz Jakab tanár úr tartja a matematika órákat csoportbontásban: 10.a matematika A1 és 10.a matematika A2 csoportok számára. Amikor az egyik csoportnak ő matematikát tart, addig a másik csoport más órán vesz részt, egyik nap például informatikán.
+
+Ha most hiányzik az informatika tanár, akkor előfordulhat, hogy szeretnénk egy összevont, egész osztályos matematika órát kiírni, másképp fogalmazva a második csoportnak informatika helyett egy - az első csoporttal összevont - matematika órát szeretnénk felvenni.
+
+Ezt a szituációt a következő módon kellett eddig kezelni:
+ * az informatika órát állítsuk 'elmarad' státuszúra
+ * a matematika órát is állítsuk 'elmarad' státuszúra (hogy fel tudjuk venni a másik matematika órát)
+ * a 'Plusz óra' menüpontban vegyünk fel a második matematika tankörnek egy órát
+ * az első matematika tankör státuszát 'elmarad'-ról állítsuk át 'összevonás'-ra
+
+Ez a meglehetősen nehézkes lépéssor abból adódik, hogy a program az órák módosításakor próbál minden lehetséges ütközést kiszűrni, így például egy tanár számára nem vehetünk fel olyan időpontra plusz órát, amikor már van órája.
+
+===== Az új oldal használata =====
+
+Az 'Összevonás' menüpont alatt lehetőségünk van olyan összevonás egyszerű felvételére, melyben egy tanár két tankörének óráit vonjuk össze: egyik egy már bejegyzett óra, ami mellé most szeretnénk felvenni egy új órát.
+
+Az új óra felvétele magával vonja, hogy az abba tartozó diákok tanköreinek nem lehet az adott idópontban órája - így ezeket a program - figyelmeztetés után - 'elmarad' státuszúvá teszi.
+
+Első lépésként az eszközsoron válasszuk ki a kívánt dátumot, majd a megjelenó legördülő listából az órát is.
+Ezek után választhatjuk ki a tanárt - azon tanárok közül, akiknek a megjelölt időpontban már van órája.
+
+A tanár kiválasztása után megjelennek a tanár adott napi órái, és egy újabb legördülő listában a tanár tankörei.
+Válasszuk ki a felveendő óra tenkörét (ne a már bejegyzett óra tanköre legyen!).
+
+A tankör kiválasztása után a program lekérdezi azokat a tanköröket melyekkel ütközne a felveendő új óra - ezeket kilistázza a képernyőre. Ha ezután az 'Óra felvétele' gombra kattintunk, akkor a kilistázott tankörök státusza 'elmarad'-ra változik és bejegyzésre kerül az új óra. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/pluszora.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/pluszora.txt
new file mode 100644
index 00000000..cea450af
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/pluszora.txt
@@ -0,0 +1,21 @@
+====== Plusz óra felvétele ======
+
+Ez a programrész arra használható, hogy az órarendben nem szereplő, plusz órákat vegyünk fel.
+
+Egy óra felvételéhez négy dolgot kell mindenképp megadni:
+ * dátum
+ * óra
+ * tanár
+ * tankör
+Ezen kívül még megadhatjuk az óra helyszínét (terem) és típusát (órarendi óra/plusz óra).
+
+Első lépésként dátumot kell választanunk az eszköztár segítségével.
+Ez után újabb eszközök jelennek meg. Javasolt második lépésként tanárt, vagy osztályt választani - ekkor ugyanis az választható órák listája szűkül, a már foglalt órákat nem tudjuk kiválasztani.
+
+Tanár vagy osztály választás után egy tankör lista, és a választott tanár vagy osztály napi óráit tartalmazó táblázat is megjelenik.
+
+Tankör választásakor a tankör tanárainak listája váltja fel a korábbi osztály vagy tanár választó eszközt. Ha a tankörnek egy tanára van (leggyakrabban ez az eset fordul elő), akkor a program ki is választja ezt a tanárt.
+
+Ha kiválasztjuk az órát is, akkor újabb lehetőségek nyílnak meg: választhatunk a szabad termek közül, végül kiválaszthatjuk a beszúrandó óra típusát és rögzíthetjük az órát.
+
+Az óra típusának a helyettesítések kezelésekor van jelentőssége. Az órarendi órák helyettesítései, óracseréi, mozgatásai visszaállíthatóak, míg plusz óra esetén erre nincs lehetőség (ld. [[helyettesítés]]).
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/specialis.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/specialis.txt
new file mode 100644
index 00000000..d3f506f4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/specialis.txt
@@ -0,0 +1,15 @@
+====== Speciális nap összeállítása ======
+
+Ez az oldal akkor használható, ha speciális órarendű tanítási napot akarunk összeállítani - felhasználva az aktuális órarendet.
+
+Lépésenként:
+ - választása ki a dátumot
+ - ha szükséges, akkor a nap típusát állítsuk át (speciális tanítási nap) - ekkor az esetleg már betöltött órák törlődnek az adott napról (erre figyelmeztet is a program).
+ - a megjelenő űrlapon óránként (sáv) adhatjuk meg a betöltendő órákat - egész iskolára vonatkozóan. Ha van már az adott sávban óra, akkor az nem jelenik meg a szabad sávok között.
+ - ha rosszul vettünk fel egy sávot akkor törölhetjük az alsó űrlapon, majd felvehetjük újra.
+
+
+==== Mit tegyünk, ha ez nem megfelelő számunkra? ====
+
+Mit tehetünk, ha ennél összetettebb az órarendi változás, ha nem rakható össze az aktuális órarendből a speciális nap tanmenete?
+Betölthetjük a haladási napló adatait [[hogyan:speciális_tanításinap|közvetlenükl is]]. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/stat.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/stat.txt
new file mode 100644
index 00000000..04c52cdb
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/haladasi/stat.txt
@@ -0,0 +1,46 @@
+
+====== Haladási statisztika ======
+
+A haladási statisztika arra szolgál, hogy gyors képet kapjunk az egyes tankörök eddig megtartott és várható óraszámairól. Fontos ez,
+hiszen törvényi kötelezettség az előírt óraszámok legalább 90%-ának megtartása, ennek hiányában az órákat plusz órák beiktatásával pótolni kell.
+(Ha tud valaki pontos törvényi hivatkozást, szöveget, az írja meg nekünk :o) )
+
+
+A tanköröket listázhatjuk a tanár, az osztály, vagy akár egy konkrét diák alapján.
+
+A táblázatban több oszlop szerepel. Az első a tankör neve, a második az eddig megtartott órák száma (az aktuális óraszám),
+utána követezik a becsült hátralávő órák száma, majd az elöbbi kettő összegeként a becsült összes óra száma, végül a tervezett óraszám.
+
+Az utolsó, a tervezett óraszám a végzős
+tanítási hetek számát (_VEGZOS_TANITASI_HETEK_SZAMA) és a tankör adott tanévre megadott óraszámait
+(Intézményi adatok/Tankörök) alapul véve számolja ki az óraszámot.
+Ez nem mindig jó, lehet ugyanis olyan osztály (például egy éves nyelvi előkészítő képzés), amelyik végzős,
+abban az értelemben, hogy következő tanévben már jelenlegi a formájában nem lesz,
+de nem vonatkozik rá a rövidebb tanulmányi időszak (ami tipikusan az érettségiző osztályokra jellemző).
+
+A becsült hátralévő órák oszlopa a betöltött órarendet
+és munkatervet veszi alapul és abból számol óraszámot. Ez azt jelenti, hogy ha nem változik a munkaterv és az órarend év végéig,
+és nem lenne egy elmaradó óra sem a hátralévő időszakban, akkor pontosan ennyi lenne a hátralévő órák száma. Többnyire sajnos
+inkább kevesebb lesz ez a szám a gyakorlatban, hiszen órák el-elmaradnak, viszont ritkán kerülnek be plusz órák.
+
+A végzősök esetén vigyázni kell arra, hogy a rájuk vonatkozó órarendi bejegyzések csak a megfelelő dátumig legyenek érvényesek.
+Amikor ugyanis azórarendet év elején, vagy félévkor betöltjük, akkor általában egész évre töltünk be minden bejegyzést.
+Ez valójában hibás, mert a végzősök óráinak érvényességi ideje, az ő szorgalmi időszakuk hamarabb véget ér.
+Ennek helyrerakására szolgál a [[naplo:orarend:vegzosorarendlezaras|Napló/Tanév adatok/Végzős órarend lezárása]]
+menüpont.
+
+A __diákok__ és a __szülők/gondviselők__ csak a saját érintett tanköreiket látják, míg a __tanárok__ a teljes intézményét.
+
+Külön érdekesség, hogy diákot választva láthatóvá válik a diák adott tankör óráiról történt hiányzásának száma és aránya is.
+A **Hiányzás arány (megtartott|tervezett)** oszlopban a zárójelben az aktuális időpontig megtartott órákról történt hiányzása
+látszik százalékosan (első érték), míg a második az egész évi (tervezett) órákra vetítve mutatja a hiányzás arányát.
+Utóbbi akkor lehet érdekes, ha a diák hiányzása az adott tárgyból az órák 30%-át meghaladja (vagy valószínűleg meg fogja haladni).
+Lásd: [[jogtar:hianyzas|11/1994. (VI. 8.) MKM rendelet - a nevelési-oktatási intézmények működéséről]] (6) d) pont.
+
+Ilyenkor figyelemfelkeltő **piros** színnel jelenik meg az adott hiányzás.
+
+Diákot választva még egy plusz oszlop jelenik meg: az **Érdemjegyek száma**. Itt
+
+ Érdemjegyek száma / Tankörlétszám / Heti óraszám = Egy főre jutó érdemjegyek átlagos száma / Heti óraszám = Átlagos jegy szám
+
+értékeket láthatunk. Ez a statisztika a "Van-e elég jegy a tankörben?" kérdésre próbál választ adni... \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hianyzas/osztaly.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hianyzas/osztaly.txt
new file mode 100644
index 00000000..b9b4dbc1
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hianyzas/osztaly.txt
@@ -0,0 +1,48 @@
+====== Osztály hiányzásainak összesítése ======
+
+Az oldal elsősorban az osztályfőnökök munkáját segíti, összesítést adva a diákok hiányzásairól.
+
+
+===== Megjelenítési beállítások =====
+
+Az eszközsor alatti sávban egyszerűen kiválaszthatjuk, hogy mely adatok megjelenítését kérjük a programtól:
+ * Lezárt - A már nem módosítható hiányzási adatok megjelenítése.
+ * Igazolható - A még igazolható/törölhető hiányzások, késések megjelenítése
+ * Összes - Összesítés a hiányzások, késések, felszerelés hiányok és felmentések adataiból.
+ * Fegyelmi utáni - Az igazolatlan hiányzások és késések miatt legutóbb beírt fegyelmi fokozat referencia dátuma utáni bejegyzések (hiányzás, késés, felszerelés hiány) összesítése.
+ * Fegyelmi fokozat - Az igazolatlan hiányzások és késések miatt adott legutóbbi fegyelmi fokozat megjelenítése, valamint új fegyelmi fokozat beírásának lehetősége.
+
+
+Az utolsó lehetőség, hogy beállítsunk egy viszonyítási dátumot (referencia dátum), mely előtti bejegyzéseket lezártnak tekintjük. Ezzel a lehetőséggel szigoríthatjuk a feltételt, tehát olyan hiányzásokat is lezártként jeleníthetünk meg, lezártként kezelhetünk, melyek valójában még igazolhatóak.
+
+A referencia dátum kerül be a fegyelmik beírásakor a naplo referenciaDt mezőjébe.
+
+===== A hiányzási adatok megjelenítése =====
+
+A hiányzások és késések többnyire három-három oszlopban jelennek meg: igazolatlan, igazolt és összes hiányzás, illetve késés száma. Kivétel ez alól a "fegyelmi utáni" kategória, ahol csak az igazolatlan késés, hiányzás és a felszerelés hiány adatok jelennek meg (ezek befolyásolják a fegyelmi fokozatot).
+
+Az igazolatlan késésekre állítva az egér kurzort a böngésző kiírja a késések összesített időtartamát.
+
+===== Fegyelmi fokozatok rögzítése =====
+
+A funkció még nem működik!
+
+A legördülő listából válasszuk ki a megfelelő fegyelmi fokozatot, majd nyomjuk meg a "rögzít" gombot. Ekkor a program rögzíti a bejegyzést. A bejegyzéshez tartozik egy úgynevezett "viszonyítási dátum", vagy referencia dátum. A program úgy tekinti, hogy az e dátum előtt beírt hiányzásokre vonatkozik a fegyelmi bejegyzés, így követhető, hogy a legutóbbi fegyelmi bejegyzés óta hány újabb keletkezett.
+
+===== Határidők kezelése =====
+
+A határidőket az alábbi konstansok értéke határozza meg:
+ * _HIANYZAS_HATARIDO - A szaktanár az itt megadott időpontig visszamenőleg beírhat hiányzást. Értékét nem érdemes túl nagynak választani, mert a késői beírás nagyban megnehezíti az osztályfőnök dolgát. Javasolt érték: 1-2 nap
+ * _OFO_HIANYZAS_BEIRAS - Az osztályfőnök számára ennyi tanítási napig lehet visszamenőleg hiányzásokat beírni. Kicsit lehet hosszabb határidő, mint a szaktanáré, hiszen saját munkáját nem zavarja, ha később írja be a hiányzást. Javasolt érték: 5 nap
+ * _OFO_HIANYZAS_HATARIDO - Az előző érték alapján kiszámított dátum.
+ * _IGAZOLAS_BEIRAS - Az osztályfőnök számára legfeljebb ennyi tanítási napig lehet visszamenőleg igazolásokat rögzíteni az után, hogy a diák leadta az igazolást. A pontosabb magyarázatot lásd alább. Javasolt érték: 5-8 nap.
+ * _IGAZOLAS_BEIRAS_HATARIDO - Az előző értékből számított dátum.
+ * _IGAZOLAS_LEADAS - A tanulónak a hiányzást követően legfeljebb ennyi tanítási nap áll rendelkezésre, hogy leadja igazolását. Ha az adott időszakban van osztályfőnöki órája, akkor nem ezzel az értékkel, hanem az osztályfőnöki óra dátumával számol a program.
+ * _IGAZOLAS_LEADAS_HATARIDO - _IGAZOLAS_LEADAS+_IGAZOLAS_BEIRAS tanítási nappal ez előtti dátum. E dátum előtt befejeződő hiányzások igazolásárá már nincs lehetősége a diáknak. A program konkrét tanuló esetén ezt az időszakot tovább szűkítheti, ha a megfelelő időszakban volt osztályfőnöki óra. Ilyen esetben az osztályfőnöki óra dátuma+_IGAZOLAS_BEIRAS tanítási nap eltelte után már nem igazolható a hiányzás.
+
+===== Fegyelmi fokozatok kezelése =====
+
+Az igazolatlan hiányzások összesítésének módját három konstans segítségével szabályozhatjuk:
+ * _HANY_KESES_IGAZOLATLAN - Ha ez az érték nem 0, akkor az itt megadott számú igazolatlan késést, mint fegyelmi vétséget átváltjuk igazolatlan hiányzássá.
+ * _HANY_FSZ_IGAZOLATLAN - Ha ez az érték nem 0, akkor az itt megadott számú felszerelés hiányt egy igazolatlan hiányzásnak megfelelő fegyelmi vétségként kezeljük.
+ * _KESESI_IDOK_OSSZEADODNAK - Ez a logikai érték dönti el, hogy élünk-e azzal a törvény adta lehetőséggel, hogy a hiányzásokat percek szerint rögzítjük és 45 percenként egy-egy igazolatlan hiányzásként könyveljük el. Az előző két opció csak ennek hamis értéke esetén lesz érvényes.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/admin.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/admin.txt
new file mode 100644
index 00000000..2f03335d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/admin.txt
@@ -0,0 +1,28 @@
+====== Hibajegykezelés (vezetőség, mayoradmin) ======
+
+Amikor egy //felhasználó// ([[naplo:hibabejelento:hibabejelento|hibajegyet/kérelmet ír]]), a //vezetőség// és a //naploadmin// **Kezdőlap**ján jobb oldalon a
+**Hangya** fül alatt megjelenik a friss hibajegy (portál modulos naplónál, egyébként a **Napló/Kérelmek** menü alá kell navigálni).
+A tartalmától függően a //vezetőség// és/vagy a //naploadmin// reagálhat rá.
+
+A működéssel kapcsolatos hibabejelentés mellett (ami egyértelműen a //naploadmin//-nak szól) itt van lehetősége a //felhasználóknak// -
+vagy inkább itt célszerű - a naplóval kapcsolatos hivatalos, a vezetőségnek szóló kérelmeik beadására. Iskolája válogatja, hogy ide mit vesznek be:
+tévesen beírt jegyek, bejegyzések, hiányzások, tankörmódosítás, órarendi módosítás, stb.
+Az idealisztikus elképzelés szerint a //naploadmin// az ilyen típusú kérelmeket csak a vezetőség utasítására, a vezetőség jóváhagyásával végzi/végezheti el.
+
+A kérelem tárgyától függően az illetékes (a **Napló/Kérelmek** menüben):
+ * kategorizálhatja (sürgős, névsor, jogviszony, stb), illetve telephelyhez rendelheti a kérelmeket (már ha van több telephely)
+ * írhat megjegyzést (további kérdés, kérés a //felhasználó// felé, vagy az intézkedő személy felé - __vigyázat, a hibajegyet író is lát mindent!__) a kérelemhez;
+ * jóváhagyhatja azt (ez jelzi a kérelem elfogadását, de még elintézetlen mivoltát);
+ * lezárhatja azt (a kérelem elfogadva, elintézve).
+
+
+A //vezetőség// és a //naploadmin// felületéről a lezárt kérelmek eltűnnek, további matatásuk csak SQL-szinten lehetséges,
+a //felhasználóknál// viszont a lezárást követő 5 napig megmarad "hangya".
+
+A Kérelem statisztika három száma a következő (classic skin-nél):
+ * kék alapon: összes kérelmek száma;
+ * zöld alapon: lezárt kérelmek száma;
+ * ciklámen alapon: a kérelmek átlagos elintézési ideje (nap).
+
+A "hangya" alatt/felett a színes téglalapokban a feladás, a megjegyzés, a jóváhagyás és a lezárás dátuma látszik, a feladó és az intézkedő
+(felhasználó)névhez köthető, tehát nyugodtan használhatjuk a napló ezen funkcióját a **szolgálati utat igénylő ügyek** intézésére... \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/hibabejelento.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/hibabejelento.txt
new file mode 100644
index 00000000..b48c6f79
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hibabejelento/hibabejelento.txt
@@ -0,0 +1,24 @@
+====== Hibabejelentés, kérelem - "Hangya" ======
+
+A //felhasználók// (tanár, diák, szülő) saját felületükön a **Napló/Kérelmek** menüben, az **Új kérelem** alatt küldhetnek hibajegyet, amit a
+//vezetőség// és a //naploadmin// lát, illetve tud rá reagálni (vagy ezzel kapcsolatban intézkedni). Ugyanez a funkció elérhető a felület jobb oldalán,
+a kis hangyafejre kattintva.
+
+A működéssel kapcsolatos hibabejelentés mellett (ami egyértelműen a //naploadmin//-nak szól) itt van lehetőség - vagy inkább itt célszerű -
+a naplóval kapcsolatos hivatalos, a vezetőségnek szóló kérelmek beadására. Iskolája válogatja, hogy ide mit vesznek be: tévesen beírt jegyek, bejegyzések,
+hiányzások, elmaradt igazolások, tankörmódosítás, órarendi módosítás, stb.
+
+A //felhasználóknak// nincs más dolga, mint az etikettet betartva (köszönés, illedelmes, egyértelmű fogalmazás, elköszönés) megírni a "hangyát", majd az
+OK gombra kattintva elküldeni. Igyekezzünk pontos és elégséges információt megadni az esetleges javításhoz (melyik osztály/tankör/diák/óra érintett, igazolás
+esetén milyen típusú igazolásra volna szükség, stb).
+Amennyiben a //vezetőség// vagy a //naploadmin// további kérdéseket, kérések tesz fel megjegyzésként, ezek ugyanebben a
+hibajegyben/kérelemben a //felhasználó// által írt szöveg alatt egy külön mezőben jelennek majd meg.
+
+A feladott hibajegy/kérelem sorsát portál modullal ellátott napló esetén a **Kezdőlapon** középen színes keretben és jobb oldalon, a **Hangya** fül alatt, portál hiányában a **Napló/Kérelmek** menüpont alatt lehet figyelemmel kísérni.
+
+ * A még **feldolgozatlan** "hangya" a jobb oldali menüben fekete szövegű, a **Napló/Kérelmek** menüben háttere szürke, a bal alsó téglalapban megjelenő dátum a feladás idejét jelzi.
+ * A **megjegyzéssel** elátott "hangya" megjelenik a **Kezdőlapon** rozsdaszínű megjegyzés-mezővel, a jobb oldalon félkövér szöveget kap, a **Napló/Kérelmek** alatt háttere továbbra is szürke, alatta olvasható a megjegyzés.
+ * A **jóváhagyott**, tehát elfogadott, de még elintézetlen kérelem a **Kezdőlapon** és a jobb **Hangyában** zöld hátterűvé válik, a **Napló/Kérelmek**-ben a zöld háttér mellett megjelenik egy újabb téglalapban a jóváhagyás dátuma.
+ * A **lezárt**, tehát elintézett hibajegy a **Kezdőlapon** újra zöld hátterű, jobb oldalon visszáll szürkére, **Napló/Kérelmek** menüben szintén marad a zöld háttér, és felbukkan a harmadik dátumos téglalap a lezárás dátumával.
+
+A kérelmet/hibajegyet törölni nem lehet!
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hirnok/hirnokfeliratkozas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hirnok/hirnokfeliratkozas.txt
new file mode 100644
index 00000000..3df652f3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/hirnok/hirnokfeliratkozas.txt
@@ -0,0 +1,68 @@
+====== Hírnök beállítások, feliratkozás ======
+
+A Hírnök képes arra, hogy bizonyos naplóbeli eseményekről (jelenleg - 2018. február 18. - csak tanárnak és diáknak) email-es értesítőt küldjön.
+
+===== Azok a bizonyos naplóbeli események... =====
+
+ * ... évközi értékelés (féljegy, jegy, százalékos, stb.
+ * ... félévi és évvégi zárójegy / -értékelés
+ * ... óra elmaradás, helyettesítés, összevonás, stb.
+ * ... dolgozatbejelentés
+ * ... hiányzás
+
+===== Levelezés beállítása =====
+
+
+Értelemszerűen szükség van valamiféle levélküldő szerverre. Ehhez [[hogyan:jelszoemlekezteto#levelkueldes_beallitasa|itt]] egy leírás - de persze ahány ház, annyi szokás...
+
+===== Config állomány szerkesztése =====
+
+Itt előfordulhatnak átfedések a szülői jelszó-emlékeztetővel kapcsolatos beállításoknál - figyelmesen járjunk el!
+
+Szerkesszük a main-config.php-t!
+
+ // Hirnok
+ define('__EMAIL_ENABLED', true);
+ define('__SUPPORT_EMAIL_ADDRESS','naplo@iskola.hu');
+ define('__SUPPORT_EMAIL_NAME',_SITE.' (Iskolai e-napló Support)');
+
+===== Időzítő - azaz cron =====
+
+Ahhoz, hogy a megfelelő időközönként kimenjenek a levelek, létre kell hozni az időzítőállományt, pl.:
+
+ nano /etc/cron.d/mayor
+
+És írjuk bele (aposztróf nélkül...!):
+
+ '*/10 * * * * root cd /var/mayor/www && php index.php naplo hirnok cronFutar >> /var/log/mayor.cron.log'
+
+Ez esetben a MaYoR **10 percenként** végignézi a feliratkozottak listáját (//intezmeny_iskola// adatbázis //hirokFeliratkozas// tábla), majd az abban szereplő utolsó email időpontjához viszonyítva kikeresi a táblákban, miről kit kell értesíteni.
+
+Első alkalommal a feliratkozott a __tanévbeli teljes történetét__ megkapja... :-)
+
+Más időzítéshez tanulmányozzuk a //cron// szintaktikáját, pl. [[https://www.pantz.org/software/cron/croninfo.html|itt]]!
+
+===== Beállítás =====
+
+A diák felületén csak az aktuálisan használt email-címe(ke)t kell megadnia, és legfeljebb 10 percet várnia...
+Jelenleg (r4371) a szülői email-címeket is itt kell felvenni.
+
+Figyelmeztessük a felhasználókat, hogy a levelek könnyen a SPAM mappában landolhatnak - keressék ott is, és állítsanak be rá szabályt!
+
+
+===== A Hírnök korlátozása =====
+
+Előfordul, hogy hibás működés miatt (vagy éppen szándékosan) nem szeretnénk a folyamatos tájékoztatást.
+Ilyenkor az alábbiak segíthetnek:
+
+ * Állítsuk le a levélküldő szolgáltatást!
+
+ # service postfix stop
+
+ * A //main-config.php// állományban ne engedélyezzük (bár ez az újabb feliratkozókat korlátozza csak...):
+
+ define('__EMAIL_ENABLED', false);
+
+ * Távolítsuk el a // /etc/cron.d/mayor// állományt, vagy kommenteljük ki a sor eljén egy #-gel...
+
+A napló elejére ilyenkor illik mindenképpen egy hírt kirakni, hogy miért is áll ez a szolgáltatás... :-)
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/diaktankorjelentkezes.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/diaktankorjelentkezes.txt
new file mode 100644
index 00000000..9df77a2a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/diaktankorjelentkezes.txt
@@ -0,0 +1,10 @@
+====== Tankörjelentkezés ======
+
+Az intézmény által felajánlott választható tankörökbe jelentkezhetnek az erre jogosult diákok.
+
+Ehhez a vezetőségnek fel kell vennie a választható tanköröket. A [[naplo:intezmeny:tankor|tankörök felvételekor]] meg kell jelölni, hogy a tankör választható, meg kell adni a minimális és maximális létszámokat, fel kell venni a szemeszterenkénti óraszámokat, valamint meg kell jelölni, hogy a tankörbe mely osztályok tanulói jelentkezhetnek.
+
+Szükséges még a jelentkezési [[naplo:admin:szemeszterek|időszakok felvétele]] az adott tanévhez. Két időszakot féle időszakot adhatunk meg:
+ * előzetes tárgyválasztás: ebben az időszakban a program csak a maximális létszámokat figyeli. Ebben az időszakban dől el, hogy mely tankörökre lesz kellő számú jelentkező.
+ * tárgyválasztás: ebben az időszakban a program a maximális és minimáslis létszámokat is figyeli, így egy tárgyat leadni nem lehet, ha a létszám a minimális létszám alá menne, illetve tárgyat felvenni nem lehet, ha a létszám a maximális létszámot meghaladná.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/kepzes.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/kepzes.txt
new file mode 100644
index 00000000..a8e094d5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/kepzes.txt
@@ -0,0 +1,31 @@
+====== Képzések ======
+
+===== Rögzítés lépései =====
+
+1. Képzés felvétele
+2. Képzés osztályhoz rendelése
+3. Képzés óratervének beállítása
+4. Diákok képzéshez rendelése
+
+
+==== Képzés felvétele ====
+
+Képzések menüpontban egy új képzés felvételénél írjunk be egy képzésre jellemző, de ne túl hosszú nevet (pl. hatévfolyamos angol), és adjuk meg a bevezetés évét, ami
+tulajdon képpen csak egy verziószám. A rögzítés után lehetőségünk van megadni a kezdő és záró évfolyamot (ezt mindenképp tegyük meg), illetve a résztvevő
+osztályokat az aktuális tanévben aktív osztályok betűjelei közül.
+
+==== Képzés óratervének beállítása ====
+
+A képzések óratervénél megjelenik a képzéseknél beállított kezdő és záróévfolyamok közötti kötelező és maximális HETI óraszámok, valamint az egyes tárgyakohoz tartozó
+HETI óraszámok rögzítési lehetősége. Az egyes tárgyaknál a félévi és évvégi osztályzatok típusát is be kell állítanunk.
+
+Az itt beállított követelmények lesznek érvényesek egy diák minden ahhoz a tárgyhoz tartozó tankörénél - természetesen
+évfolyamtól függően. (A képzés erősebb, mint a tárgyhoz beállított alapértelmezés.)
+
+==== Diákok képzéshez rendelése ====
+
+A diákokat a képzéshez az osztályon keresztül tudjuk rendelni. Az osztálynévsorban (osztály menüpont) ikszeljük be a megfelelő képzésneveket.
+A képzésekhez nem tartozik egyelőre dátumintervallum! Osztályváltáskor képzést is vált a diák.
+
+Bár egy diák tartozhat több osztályba és ezen keresztül több képzésbe is, ugyanakkor ha különböző évfolyamokra jár egyszerre és a képzéseihez ugyanazon tárgyhoz különböző
+zárókövetelmény is tartozik, az hibajelzéshez vezet. Ilyen szituáció azonban bár elvileg lehetséges, a gyakorlatban nem fordulhat elő!
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/munkakozosseg.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/munkakozosseg.txt
new file mode 100644
index 00000000..6268111d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/munkakozosseg.txt
@@ -0,0 +1,21 @@
+====== Munkaközösségek ======
+
+A MaYoR rendszerben a munkaközösség fogalma nem felel meg a hétköznapi értelemben vett munkaközösségnek. Valahol a munkaközösség és a szak, végzettség között van. Arra szolgál, hogy eldönthesse a program, hogy egy-egy tárgyat ki taníthat szakszerűen.
+
+ * Egy valódi munkaközösségbe sokszor több tárgy tanárai is bekerülhetnek (pl. "kisebb" nyelvek munkaközössége: francia, spanyol, olasz tanárokkal). A naplóban ilyen összevonás nem szerencsés, mert ez azt eredményezné, hogy például szakszerű helyettesítésre kiírhatnánk egy francia szakos tanárt spanyol órára.
+ * A szaknál, végzettségnél viszont általánosabb a mi munkaközösségünk, hisz előfordulhat, hogy egy tárgyat több különböző végzettséggel is taníthatunk.
+
+===== Új munkaközösség =====
+
+Új munkaközösség felvételéhez lényegében csak egy nevet kell adnunk a munkaközösségnek, illetve opcionálisan megjelölhetjük a munkaközösség vezető személyét (ennek pillanatnyilag (még) nincs semmilyen lényeges következménye a program működését illetően, de később lehetnek ilyen irányú fejlesztések).
+
+===== Munkaközösség módosítása =====
+
+Módosíthatjuk a munkaközösség nevét, kiválaszthatjuk a munkaközösségvezetőt, felvehetünk tagokat a munkaközösségbe (a Ctrl gomb segítségével egyszerre több felveendő tagot is kijelölhetünk), törölhetünk tagokat a munkaközösségből (a Ctrl gomb itt is működik).
+
+A munkaközösség tagjain kívül fontos még megadnunk az adott munkaközösséghez tartozó tárgyakat is. Itt ismét csak egy nevet kell adnunk a tárgynak. A felvett tárgy nevét felületről már nem módosíthatjuk, lehetőség van viszont tárgy törlésére (ez magaután vonhat egyéb következményeket, kezdve az adott tárgyhoz tartozó tankörök törlésén...
+
+===== Munkaközösség törlése =====
+
+Szükség esetén akár egész munkaközösséget is törölhetünk. Ez persze magaután vonja a hozzá tartozó tárgyak törlését is, ez meg csak a tárgyhoztartozó tankörök törlésével oldható meg, egy tankörhöz viszont rengeteg egyéb adat kapcsolódhat (jegyek, órák, hiányzások, stb). Gondoljuk tehát meg, mielőtt törlésre szánjuk magunkat.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/osztaly.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/osztaly.txt
new file mode 100644
index 00000000..e5eff3e2
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/osztaly.txt
@@ -0,0 +1,109 @@
+====== Osztályok adminisztálása ======
+
+Ezen az oldalon vehetünk fel új osztályokat, illetve módosíthatjuk a már felvett osztályok bizonyos adatait.
+
+===== Új osztály felvétele =====
+
+Az osztály képzési formája egy egyszerű tájékoztató jellegű információ, más jelentőssége nincs (egyenlőre).
+
+Fontos viszont az osztály indulásának és végzésének __tanéve__, ami a végzés esetén lehet könnyen téveszthető: a tanévet ugyanis a tanévkezdés évével jelöljük, így **a végzés tanéve általában eggyel kisebb, mint a végzés éve**! Meg kell adjuk még az osztály induláskori évfolyamát és jelét. Az osztály jel többnyire egy, esetleg két-három betű.
+
+===== Osztály adatainak módodítása =====
+
+A módosítani kivánt osztály kiválasztása előtt ellenőrizzük, hogy megfelelő tanév szerint nézzük-e az osztályokat, hiszen az osztályok jelei tanévenként változnak. Ha szükséges váltsunk tanévet (egyes osztályok esetleg meg sem jelennek a listában, ha nem megfelelő tanévet választunk).
+
+Az osztály kiválasztása után lehetőségünk van a képzési információ szerkesztésére, valamint az osztályfőnöki megbizatás rögzítésére (megbizatást módosítani, törölni a felületről egyenlőre még nem tudunk).
+
+
+===== Osztály tagjainak felvétele/frissítése adatállományból =====
+
+Készítsünk egy tabulátorokkal tagolt szöveges állományt, melyben a fejléc sort az egyes tanulók adatait tároló sorok követik. A fejlécben érdemes a ''diak'' tábla mezőneveit használni, mert ekkor a program automatikusan felismeri ezeket. A ''diak'' tábla mezői:
+
+
+ mysql> explain diak;
+ +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------------+----------------+
+ | Field | Type | Null | Key | Default | Extra |
+ +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------------+----------------+
+ | diakId | int(10) unsigned | NO | PRI | NULL | auto_increment |
+ | oId | bigint(20) unsigned | YES | UNI | NULL | |
+ | diakigazolvanySzam | int(10) unsigned zerofill | YES | | NULL | |
+ | tajSzam | int(9) unsigned zerofill | YES | | NULL | |
+ | adoazonosito | bigint(10) unsigned zerofill | YES | | NULL | |
+ | szemelyiIgazolvanySzam | varchar(16) | YES | | NULL | |
+ | tartozkodasiOkiratSzam | varchar(16) | YES | | NULL | |
+ | viseltNevElotag | varchar(8) | NO | | | |
+ | viseltCsaladinev | varchar(64) | NO | | | |
+ | viseltUtonev | varchar(64) | NO | | | |
+ | szuleteskoriNevElotag | varchar(8) | NO | | | |
+ | szuleteskoriCsaladinev | varchar(64) | NO | | | |
+ | szuleteskoriUtonev | varchar(64) | NO | | | |
+ | szuletesiHely | varchar(16) | YES | | NULL | |
+ | szuletesiIdo | date | YES | | NULL | |
+ | nem | enum('fiú','lány') | YES | | NULL | |
+ | apaId | int(10) unsigned | YES | MUL | NULL | |
+ | gondviseloId | int(10) unsigned | YES | MUL | NULL | |
+ | neveloId | int(10) unsigned | YES | | NULL | |
+ | anyaId | int(10) unsigned | YES | MUL | NULL | |
+ | allampolgarsag | varchar(16) | YES | | magyar | |
+ | lakhelyOrszag | varchar(16) | YES | | Magyarorsz�g | |
+ | lakhelyHelyseg | varchar(16) | YES | | NULL | |
+ | lakhelyIrsz | varchar(8) | YES | | NULL | |
+ | lakhelyKozteruletNev | varchar(32) | YES | | NULL | |
+ | lakhelyKozteruletJelleg | enum('út','utca','útja','körút','tér','tere','körtér','köz','fasor','árok','lejtő','lakótelep','sétány','dűlő','átjáró','bástya','bástyája','domb','dűlőút','egyéb','elágazás','erdősor','fasora','forduló','főút','gát','hajóállomás','határsor','határút','hegy','helyrajzi szám','hídfő','játszótér','kapu','kert','kikötő','kilátó','körönd','körvasútsor','lakónegyed','lépcső','liget','major','mélykút','ösvény','park','parkja','part','piac','pihenő','puszta','rakpart','repülőtér','rét','sétaút','sor','sugárút','sziget','tanya','telep','udvar','üdülőpart','várkerület','vasútállomás','völgy','zug') | YES | | NULL | |
+ | lakhelyHazszam | varchar(20) | YES | | NULL | |
+ | lakhelyEmelet | varchar(5) | YES | | NULL | |
+ | lakhelyAjto | varchar(5) | YES | | NULL | |
+ | tartOrszag | varchar(16) | YES | | Magyarorsz�g | |
+ | tartHelyseg | varchar(16) | YES | | NULL | |
+ | tartIrsz | varchar(8) | YES | | NULL | |
+ | tartKozteruletNev | varchar(32) | YES | | NULL | |
+ | tartKozteruletJelleg | enum('út','utca','útja','körút','tér','tere','körtér','köz','fasor','árok','lejtő','lakótelep','sétány','dűlő','átjáró','bástya','bástyája','domb','dűlőút','egyéb','elágazás','erdősor','fasora','forduló','főút','gát','hajóállomás','határsor','határút','hegy','helyrajzi szám','hídfő','játszótér','kapu','kert','kikötő','kilátó','körönd','körvasútsor','lakónegyed','lépcső','liget','major','mélykút','ösvény','park','parkja','part','piac','pihenő','puszta','rakpart','repülőtér','rét','sétaút','sor','sugárút','sziget','tanya','telep','udvar','üdülőpart','várkerület','vasútállomás','völgy','zug') | YES | | NULL | |
+ | tartHazszam | varchar(20) | YES | | NULL | |
+ | tartEmelet | varchar(5) | YES | | NULL | |
+ | tartAjto | varchar(5) | YES | | NULL | |
+ | jogviszonyKezdete | date | YES | | NULL | |
+ | kezdoTanev | smallint(5) unsigned | NO | MUL | | |
+ | kezdoSzemeszter | tinyint(3) unsigned | NO | | | |
+ | jogviszonyVege | date | YES | | NULL | |
+ | telefon | varchar(64) | YES | | NULL | |
+ | mobil | varchar(64) | YES | | NULL | |
+ | email | varchar(96) | YES | | NULL | |
+ | statusz | enum('jogviszonyban van','magántanuló','jogviszonya felfüggesztve','jogviszonya lezárva') | NO | | jogviszonyban van | |
+ | penzugyiStatusz | enum('állami finanszírozás','térítési díj','tandíj') | YES | | állami finanszírozás | |
+ | szocialisHelyzet | set('szülei elváltak','három vagy több gyerekes család','rendszeres gyermekvédelmi támogatást kap','állami gondozott','veszélyeztetett','hátrányos helyzetű','halmozottan hátrányos helyzetű','sajátos nevelési igényű') | YES | | NULL | |
+ | fogyatekossag | set('tartósan beteg','mozgássérült','beszédfogyatékos','hallássérült','látássérült','diszlexia','diszkalkulia','diszgráfia','tanulásban akadályozott','értelmileg akadályozott','autista','tanulási képességek kevert zavarával küzdő') | YES | | NULL | |
+ | gondozasiSzam | varchar(128) | YES | | NULL | |
+ | elozoIskolaOMKod | mediumint(8) unsigned zerofill | NO | | | |
+ | kollegista | tinyint(3) unsigned | NO | | 0 | |
+ +-------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+-----+-------------------------+----------------+
+
+Az általunk készített állományban nem kell minden mezőnek szerepelnie, fontos azonban, hogy új tanulók felvételekor a ''statusz'', ''jogviszonyKezdete'', ''kezdoTanev'', ''kezdoSzemeszter'' mezők
+értékeinek megadása kötelező (adatfrissítéskor már nem), ezen kívül erősen ajánlott az oktatási azonosító (''oId'') megadása, ami az egyetlen megbízható kulcs mező.
+Végül megadhatjuk itt az osztályba kerülés (''beDt'') és várható kilépés (''kiDt'') dátumát is (bár ez utóbbit inkább akkor érdemes beállítani, mikor a tényleges kilépés meg is történik),
+ami ugyan nem a ''diak'' tábla mezője, de ezen az oldalon használható - az általános import oldal ([[naplo:admin:import|Admin/Import]]) működésétől ebben tér el az itteni importálás:
+a felvett/módosított diákokat a megadott dátummal fel is veszi a kiválasztott osztályba. Egy új tanulók adatait tartalmazó adatállomány tehát valahogy így nézhet ki:
+
+ oId viseltCsaladinev viseltUtonev kezdoTanev kezdoSzemeszter statusz jogviszonyKezdete beDt ...
+ 74864826801 Gipsz Jakab 2007 1 jogviszonyban van 2007-08-01 2007-08-01 ...
+ 77138079743 Vincs Eszter 2007 1 jogviszonyban van 2007-08-01 2007-08-01 ...
+ ...
+
+A fenti példában a Gipsz Jakab nevű új tanuló a 2007-2008-as tanév első szemeszterében került felvételre, osztályból való kikerülésének várható ideje 2009 június 30., osztályba kerülésének dátuma 2008. augusztus 1., ami egyúttal jogviszonyának kezdete is.
+
+**Az adatállomány UTF-8 kódolású kell legyen!**
+
+A kész állományt másoljuk fel a szerverre, például a ''/tmp'' könyvtárba, majd ennek az állománynak az elérési útját kell megadunk a beviteli mezőben.
+
+A jóváhagyás után a program beolvassa a file első 5 sorát - mintaként. Ha a mezőneveket felismeri a program, akkor automatikusan rendeli hozzá őket egy-egy oszlophoz, amúgy ezt kézzel kell végrehajtanunk.
+
+Mindenképp meg kell adnunk egy, vagy több mezőt, amit kulcsként használ majd a program a betöltés során. Ez azt jelenti, hogy egy sor betöltésekor, ha van már az adatbázisban vele azonos kulcsú, akkor a beszúrás (insert) helyett csak adatmódosítást (update) hajt végre.
+
+==== Beíratlan tanulók előzetes felvétele ====
+
+Ha a beiratkozás előtt előre be akarjuk tölteni a felvett tanulók adatait, akkor a következő formátumú állományt használjuk:
+
+ oId viseltCsaladinev viseltUtonev statusz jogviszonyKezdete kezdoTanev kezdoSzemeszter beDt
+ 7654321 Gipsz Jakab felvételt nyert \N 2012 1 2012-06-25
+
+Fontos tehát, hogy a státusz "felvételt nyert", a jogviszony kezdetének dátuma viszont mág ismeretlen (NULL értékű, ezt jelzi a ''\N'').
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tanar.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tanar.txt
new file mode 100644
index 00000000..1d2f8f3d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tanar.txt
@@ -0,0 +1,67 @@
+====== Tanárok adminisztrálása ======
+
+===== Tanárok felvétele adatállományból =====
+
+Új rendszer telepítéskor a leggyorsabb megoldás, ha valamilyen adatforrásból megfelelő adatállományt készítünk, majd ezt betöltjük a programba. Ez a módszer arra is alkalmas lehet, hogy a már betöltött tanáradatokat frissítsük, módosítsuk.
+
+Készítsünk tehát egy tabulátorokkal tagolt, UTF8 kódolású, szöveghatárolók nélküli szöveges állományt, melyben a fejléc sort az egyes tanárok adatait tartalmazó sorok követik. A fejlécsorban érdemes a ''tanar'' adatbázistábla mezőneveit használni, így a program automatikusan felismeri ezeket. A mezők:
+
+ mysql> DESC tanar;
+ +------------------------+---------------------+------+-----+---------+----------------+
+ | Field | Type | Null | Key | Default | Extra |
+ +------------------------+---------------------+------+-----+---------+----------------+
+ | tanarId | int(10) unsigned | NO | PRI | NULL | auto_increment |
+ | oId | bigint(20) unsigned | YES | UNI | NULL | |
+ | beDt | date | YES | | NULL | |
+ | kiDt | date | YES | | NULL | |
+ | viseltNevElotag | varchar(8) | NO | | | |
+ | viseltCsaladinev | varchar(64) | NO | | | |
+ | viseltUtonev | varchar(64) | YES | | | |
+ | szuletesiHely | varchar(16) | YES | | NULL | |
+ | szuletesiIdo | date | YES | | NULL | |
+ | szuleteskoriUtonev | varchar(64) | YES | | | |
+ | szuleteskoriCsaladinev | varchar(64) | NO | | | |
+ | szuleteskoriNevElotag | varchar(8) | NO | | | |
+ | dn | varchar(128) | YES | | NULL | |
+ | hetiMunkaora | decimal(3,1) | YES | | 0.0 | |
+ | NEKAzonosito | varchar(16) | YES | | NULL | |
+ | userAccount | varchar(32) | YES | | NULL | |
+ | statusz | enum('határozatlan | YES | | határozatlan idejű |
+ idejű','határozott
+ idejű','tartósan
+ távol','jogviszonya
+ lezárva','külső
+ óraadó')
+ | hetiKotelezoOraszam | decimal(3,1) | YES | | 0.0 | |
+ | megjegyzes | varchar(255) | YES | | NULL | |
+ | besorolas | enum('Gyakornok', | YES | | Pedagógus I. |
+ 'Pedagógus I.',
+ 'Pedagógus II.',
+ 'Mesterpedagógus',
+ 'Kutatótanár')
+ +------------------------+---------------------+------+-----+---------+----------------+
+
+A ''tanarId'' mezőt nem kell megadni, hiszen az automatikusan növekvő sorszám, ugyanakkor az ''oId'' (oktatási azonosító), ''beDt'' (jogviszony kezdete) és a neveket tároló attribútumok (''viseltCsaladinev'', ''viseltUtonev'') megadása erősen javallott.
+További kötelezőnek tekinthető mezők a besorolás (ha nem adjuk meg, Pedagógus I. lesz), a hetiKotelezoOraszam (ha nem adjuk meg, 0 lesz) és a statusz (ha nem adjuk meg, határozatlan idejű lesz).
+
+Célszerű az új naplóban minden adatot (lehetőség szerint) a valóságnak megfelelően megadni, a régi naplók adatait pedig aktualizáni. Később mindenképpen szükség lehet rájuk.
+
+**Amennyiben nem adunk meg ''beDt'' paramétert (vagy az aktuális dátumnál nagyobbat adunk meg),** úgy a felvett tanár bekerül ugyan az adatbázisba, de nem jelenik meg a felületen - mert a program úgy tekinti, mint aki már/még nincs jogviszonyban. Ha nem ismerjük, adjuk meg az aktuális dátumot - később lehet módosítani.
+
+**Ha nem ismert a tanár oktatási azonosítója,** ideiglenes megoldásnak megfelel a dátum+sorszám, 11 jegyben megadva, pl. 20150810001.
+
+**Amikor új tanárt várunk az iskolába, de még nem tudjuk ki lesz** (pl. többen pályáztak, de még nincs döntés), a viselt nevekhez vegyük fel a **Testnevelés** (családi név) **Tanár** (utónév) formát. Utólag ezt is lehet a valódi névre cserélni.
+
+**A ''kiDt'' mezőt csak akkor kell megadni,** ha a tanár jogviszonya megszűnt, azaz nyugdíjba ment, másik iskolába ment, ne' adj 'sten, elhunyt.
+A GYES-es, fizetés nélküli szabadságon, hosszabb ideig külföldön tartozkodóknál használjuk a ''statusz'' mező **tartósan távol** elemét!
+
+Az állományt másoljuk fel a szerverre, például annak ''/tmp'' könyvtárába - ennek az állományak a teljes elérési útját kell megadnunk ezen az oldalon: Napló/Admin/Import, ''tanar'' tábla - majd az ''Adatállomány elérési útja'' mező, pl. /tmp/tanarok.csv.
+
+Jóváhagyás után a program beolvassa a file első öt sorát, ha megfelelőek a fejlécsor mezőnevei, akkor ezeket automatikusan felismeri, egyéb esetben nekünk kell beállítani, hogy van-e fejléc sor, és melyik oszlop melyik mezőnek felel meg.
+
+Ezek után mindenképp meg kell adnunk egy kulcs mezőt - célszerűen az oktatási azonosítót, ez biztos, hogy egyedi... Ennek szerepe, hogy ha az import az adatbázisban talál az adott kulcsmezőnek megfelelő rekordot, akkor módosítja annak megadott adatait. Ha pedig nem talál egyező oktatási azonosítójú rekordot, akkor újként felveszi.
+
+Ezzel a módszerrel lehet egyébként tömeges adatmódosítást végezni a ''tanar'' táblában: aktualizált ''beDt''-k, besorolások, kiderített születéskori nevek, születési idők és helyek...
+
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankordiak.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankordiak.txt
new file mode 100644
index 00000000..ebe95ab5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankordiak.txt
@@ -0,0 +1,37 @@
+====== Tankör tagjainak kezelése ======
+
+A tankörök tagjait általában az adminisztrátor változtathatja. Kivétel ez alól a tanév eleje, a tanulócsoportok kialakulásának időszaka. Ekkor a vezetőség tagjai és az egyes tankörök tanárai is módosíthatják a tankörnévsorokat.
+Ezt az időszakot az '[[naplo:admin:szemeszterek|Admin/Szemeszterek]]' menüpont alatt vehetjük fel (tankörnévsor módosítás).
+
+A módosítást lehetővé tevő űrlap tehát csak akkor jelenik meg, ha a fentiek értelmében jogunk van a névsor módosítására.
+
+A munkaközösség, illetve tárgy megadásával szűkíthetjük a tankörök listáját. A tanév megváltoztatásával megpróbálhatunk hozzáférni az előző évek tanköreihez is - erre azonban csak 'aktív' tanévek esetén és csak az adminisztrátornak van lehetősége.
+
+
+===== Tankör adatainak megjelenítése =====
+
+A tankörök névsora a tanév folyamán változhat.
+Ezért első lépésként ki kell választanunk a dátumot (referencia dátum), amelyik napon érvényes névsort szeretnénk látni.
+
+A megjelenő űrlap tetején a tankör tanárának nevét olvashatjuk, alatta a tagok adott napon érvényes névsora szerepel.
+Az egyes nevek mellett rádiógombok segítségével állíthatjuka tag jellemzőit:
+ * jelenlét (kötelező/nem kötelező): a tanulónak meg kell-e jelennie a tankör óráin, vagy esetleg felmentést kapott ez alól (magántanuló, felmentett...)
+ * követelmény (aláírás, jegy, vizsga): a tankörben milyen követelményt kell teljesítenie a diáknak (aláírás - pl szakkör esetén, jegy a legtöbb esetben, vagy vizsga - pl. a magántanulók esetén)
+ * engedélyezés (igen/nem) - felvehető tárgyak esetén lesz jelentőssége: a tanulók jelentkezhetnek egy-egy tankörbe, majd ezt engedélyezi, vagy elutasítja a vezetőség.
+A módosítások a referencia dátumtól lesznek érvényesek. Megadhatjuk azt is, hogy a módosítás meddig legyen érvényes, de bármilyen értéket is adunk meg az érvényesség megszakad, ha a diák tankörbeli tagságában szakadás van.
+
+Például, ha a diák szeptember 1-től október 1-ig, majd október 2-től november 1-ig, végü november 5-től július 30-ig tagja egy tankörnek és referencia dátumként egy szeptemberi időpontot választunk, akkor módosításaink csak legfeljebb november 1-ig érvényesíthetők. Ha a fennmaradó időszakban is módosítani szeretnénk, akkor azt külön lépésben tehetjük meg azután, hogy a referencia dátumot november 5-re állítottuk.
+
+----
+
+A tanulók melletti jelölőnégyzetben jelölhetjük a kiléptetésre szánt tanulókat. A tankörből való kilépés dátuma a referencia dátum, ami azt jelenti, hogy jóváhagyás után már nem fog a listán szerepelni a törölt tanuló, de ha egy nappal korábbi névsort nézünk ott még szerepel(het). Szükség esetén a kiléptetésnél is megadhatunk egy dátumot, így a törlés adott időszakra szűkíthető.
+
+A törlés mindíg egész tankörcsoportokra vonatkozik, azaz ha törlünk egy tanulót egy tankörből, akkor a vele egy csoportba tartozó tankörökből is törli a program a diákot.
+
+Visszamenőleges kiléptetéskor a program ellenőrzi, hogy érint-e hiányzást, illetve beírt jegyet a módosítás. Amennyiben érint, úgy a kiléptetés nem történik meg, és hibaüzenetet kapunk.
+
+----
+
+Egy-egy új tanulót felvehetük a második űrlap segítségével. Itt a be- és kilépés dátumát is megadhatjuk (a kilépés nem kötelező).
+
+A harmadik űrlapon több új tanulót vehetünk fel a tankörhöz rendelt osztályokból. A névsorban benne vannak a már felvett tanulók is, de nem okoz semmilyen problémát, ha véletlenül ismét felvételre jelölünk egy diákot. Itt is megadható a be- és kikerülés dátuma. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankorszemeszter.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankorszemeszter.txt
new file mode 100644
index 00000000..480532d7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankorszemeszter.txt
@@ -0,0 +1,22 @@
+====== Tanör óraterve ======
+
+Ezen az oldalon egy tankör "életpályáját" tekinthetjük meg, illetve megfelelő jogosultság birtokában módosíthatjuk is.
+
+Első lépésként válasszunk ki egy kiindulási tanévet. Ennek a tanévnek a tankörei közül választhatjuk ki a megjelnítendő tanköröket az eszközsor további eszközeinek segítségével:
+ * tanát tankörei
+ * munkaközösség tankörei
+ * osztály tankörei
+
+A tankörök a kiválasztott tanévben használt elnevezés szerint lesznek megjelenítve. A kiválasztott tanév oszlopa a többitől eltérő színű, a jobb áttekinthetőség kedvéért.
+
+A táblázat celláiban lévő pipák jelzik, hogy egy tankör az adott szemeszterhez (félévhez) hozzá van-e rendelve. Ha hozzá van rendelve, akkor a pipa alatt a tervezett heti óraszám is megjelenik (ez félévente eltérhet és lehet tört szám is), valamint az egérrel a jelölő négyszögre állva láthatjuk a tanör adott tanévben használt nevét is.
+
+
+
+===== Óraterv módosítása =====
+
+Az óratervet a napló adminisztrátor módosíthatja, de csak a nem lezárt tanévek esetében. Hozzárendelés törlésére egyenlőre nincs lehetőség (kockázatos beavatkozás lenne, nem javasolt eljárás).
+
+A tervezett óraszámokat tetszés szerint változtathatjuk, pillanatnyilag nincs jelentősssége - a későbbiekben az órarend elkészítésében lehet szerepe, illetve ellenőrzési célokat szolgálhat. Új hozzárendelés esetén üresen is hagyhatjuk - ekkor 0 óraszámmal lesz rögzítve a tankör. Már meglevő hozzárendelés óraszámát csak pozitív értékre változtethatjuk.
+
+Új hozzárendelés készítésekor a program a tankör tanárainak megbizatását is kiegészíti az új szemeszterek egészére. Mindig a kiválasztott tanév utolsó napján érvényes tanárok lesznek az új szemeszterekre is megbízva. Ha más tanárt vagy tanárokat szeretnénk megbízni ezekre a szemeszterekre a tankör tanításával, akkor a [[tankorTanar|Tankör tanárok]] menüpontban módosíthatjuk ezt a beállítást. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankortanar.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankortanar.txt
new file mode 100644
index 00000000..29c5f4b5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/tankortanar.txt
@@ -0,0 +1,8 @@
+====== Tankör tanárai ======
+
+Itt nézhetjük meg, illetve módosíthatjuk, hogy a tanköröknek a kiválaszott tanévben ki a tanára.
+Megfelelő jogosultság mellett módosíthatjuk is a beállításokat - de csak teljes tanévekre vonatkozóan.
+
+** Fontos **
+
+A tanár megbizatása mindig határozott időre szól, nem lehet "nyílt végű" (kiDt is NULL).
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/valtas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/valtas.txt
new file mode 100644
index 00000000..8eb0829d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/intezmeny/valtas.txt
@@ -0,0 +1,7 @@
+====== Intézmény és tanév választás ======
+
+A MaYoR elektronikus napló képes több intézmény több tanévének egyidejű kezelésére. A gyakorlatban persze általában egy intézmény épp aktuális tanévének adataival dolgozunk, de néha szükség lehet korábbi évek adataira is.
+
+A válthatóság feltétele, hogy a tanév státusza 'aktív', vagy 'lezárt' legyen, a 'tervezett' státuszú tanév adatbázisa még nem áll rendelkezésre, így ilyet nem választhatunk ki.
+
+A 'lezárt' státuszú tanév adatai nem módosíthatók, míg az 'aktív' státusz esetén a felhasználó besorolása (diák, tanár, vezetőségi tag, adminisztrátor, titkársági dolgozó) és a módosítási határidők szabják meg, hogy az adatok változtathatók-e. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/mayor-naplo.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/mayor-naplo.txt
new file mode 100644
index 00000000..5896d16f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/mayor-naplo.txt
@@ -0,0 +1,34 @@
+====== elektronikus napló ======
+===== mayor-naplo =====
+
+A mayor-naplo egy teljesértékű elektronikus naplót megvalósító modul, mely képes kiváltani a hagyományos papír alapú naplót, könnyen használható és kellőképpen rugalmas ahhoz, hogy képes legyen kielégíteni a legtöbb középiskola igényeit.
+
+célkitűzések:
+ * tanárok és diákok adatainak kezelése
+ * órarend kezelése
+ * osztályokon és évfolyamokon átívelő tankörök kezelése, fakultatív tárgyak esetén jelentkeztetéssel
+ * több tanév adatainak kezelése
+ * éves munkaterv kezelése
+ * haladási napló
+ * helyettesítések, óracserék, elmaradások, speciális tanítási napok kezelése
+ * hiányzások, igazolások kezelése
+ * osztályzatok kezelése
+ * szaktanári bejegyzések (dicséretek, figyelmeztetők) kezelése
+ * nyomtatás (PostScript és PDF formátumok támogatása)
+
+----
+==== Adatbázis-szerkezet ====
+
+A rendszer [[http://www.mysql.com|MySQL]] alapú adatbázisra épül. Az adatbázis-szerkezet három szintű.
+
+=== naplo-base ===
+
+Itt tároljuk a naplóval kapcsolatos [[kérelmek]] adatait, az aktuális [[session]] adatait és az elektronikus napló által kezelt [[intézmények]] adatait.
+
+=== naplo-intezmeny ===
+
+Itt tároljuk azokat az adatokat, amik egy intézményhez kapcsolódnak és több évre meg kell őriznünk őket. Ide tartoznak a tanárok és diákok adatai, a tanított tárgyak, sőtt a tankörök adatai is.
+
+=== naplo-tanev ===
+
+Itt tároljuk az adott tanév adatait, melyeket nem várható, hogy több év múlva is elő kívánunk venni. Ide tartoznak az év közbeni osztályzatok, hiányzások, igazolások, az órarend, a haladási napló, a helyettesítések, dicséretek és figyelmeztetések... \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/szovegesertekeles.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/szovegesertekeles.txt
new file mode 100644
index 00000000..99fab802
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/szovegesertekeles.txt
@@ -0,0 +1,71 @@
+====== Szöveges értékelés nyomtatása ======
+
+A szöveges értékelés nyomtatása sablon fájl alapján történik. A sablon tartalmaz speciális azonosítókat, amik helyére a program a megfelelő értékeket fogja behelyettesíteni.
+
+A ''/var/mayor/print/module-naplo/templates'' könyvtárba találhatók a sablonok, illetve nekünk is ide kell elhelyezni a sajátunkat az intézmény rövid nevének megfelelő nevű alkönyvtárba. Ha ilyen alkönyvtár nincs, vagy nincs benne megfelelő sablon, akkor a ''default'' alkönyvtárban található sablonokat használja a rendszer. Találunk még egy ''draft'' alkönyvtárat is, amibe a lecsupaszított sablonok találhatók - ezek mutatják meg a lehetséges használható sablonelemeket.
+
+A szöveges értékelés nyomtatásakor a rendszer egy ''szovegesErtekeles.tmpl'' nevű sablon állományt keres - előbb az intézmény mappájában, majd ha ott nem talált ilyet, akkor a ''default'' mappában.
+
+A sablonban a következő speciális jelöléseket használjuk:
+
+ %!függvény kiterjesztés
+
+Ez a vezérlősor csak a file első sora lehet, különben a program figyelmen kívül hagyja. Arra szolgál, hogy megmondjuk a sablon alapján generált szöveges állományt feldolgozó függvény nevét és a keletkező állomány kiterjesztését. Például:
+
+ %!pdfLaTeXA5 pdf
+
+Ha nincs ilyen sor, akkor a program egyszerű szöveges állományt készít.
+
+----
+
+ %$paraméterNév
+
+Egyszerű lecserélendő, behelyettesítendő változót takar.
+
+ %{blokkNév
+ ...
+ %}blokkNév
+
+A blokk nyitó, illetve csukó jelekkel egy szövegrészt foghatunk közre. Fontos, hogy a nyitó és csukó szimbólumok külön-külön, önálló sorokat alkossanak. Egy-egy ilyen blokk többször, többféle paraméterezéssel lesz bemásolva a végső szövegbe. Körlevél szerű megoldásról van szó, azzal a különbséggel, hogy itt lehetnek egymásba ágyazott blokkok is. Például a szöveges értékelések esetén minden diák számára el kell készíteni egy-egy értékelést (ez egy diák blokk-kal írható le), ezeken belül tárgyanként lesznek értékelések, a tárgyak blokkjain belül az egyes tárgyakra vonatkozó szempontok jelennek meg, azon belül a szempontokra vonatkozó minősítések jelennek meg. Ez így adjuk meg:
+
+ %{diak
+ ...
+ %{targy
+ ...
+ %{szempont
+ ...
+ %{minosites
+ ...
+ %}minosites
+ ...
+ %}szempont
+ ...
+ %}targy
+ ...
+ %}diak
+
+----
+
+Az utolsó a feltételes szövegrészek jelölése:
+
+ %?paraméterNév|igazSzöveg|hamisSzöveg%?
+
+A program ilyen esetben a szöveg kifejtésekor az adott helyen megvizsgálja a megadott paraméter logikai értékét (csak valódi logikai értéket vesz figyelembe!), és igaz esetén az ''igazSzöveg''-et, hamis logikai érték esetén a ''hamisSzöveget'', minden egyéb esetben üres sztringet fog helyettesíteni a kifejezés helyére. Például:
+
+ %?valasztott|X|O%? %$minosites
+
+A fenti sor kifejtése során, ha olyan minősítéshez jutunk, ami az adott tanuló esetén ki lett választva, meg lett jelölve, akkor a file-ba ''X'' kerül a minősítés szövege elé, míg egyéb esetben a minősítés magában áll, vagy ''O'' előzi meg.
+
+ %?elsoValasztott|%$minosites||?%?%tobbedikValasztott|, %$minosites||%?
+
+A fenti sor két elágazást tartalmaz: az első kiválasztott minősítést kiírjuk (vessző nélkül), a többedik - szintén kiválasztott - minősítéseket bevezető vesszővel írjuk ki. Így tulajdonképpen a kiválasztott minősítések listáját kapjuk meg.
+
+ %>utolsó<%>nem utolsó%>
+
+Kísérleti opció! A blokk utolsó, illetve nem utolsó elemére vonatkozó elágazás. Lehet bele ágyazva %? szerkezet.
+
+Ha a forrásszövegbe valódi % jelet kívánunk elhelyezni (pl. TeX komment), akkor használjuk a
+
+ %%
+
+jelölést!
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/torzslap.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/torzslap.txt
new file mode 100644
index 00000000..9ef7434f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/nyomtatas/torzslap.txt
@@ -0,0 +1,50 @@
+====== Törzslap nyomtatása ======
+
+A MaYoR napló A4-es méretű, egy tanév adatait tartalmazó törzslap-nyomtatvány generálására képes egy osztály, vagy azon belül egy konkrét tanuló számára.
+
+A nyomtatvány részei:
+
+ * Alapadatok (táblázat)
+ * Osztályzatok (magatartás/szorgalom, tantárgyak)
+ * Hiányzási adatok
+ * Szöveges minősítés
+ * Bejegyzések (dicséretek)
+ * Záradékok
+
+===== Alapadatok =====
+
+==== Törzslapszám ====
+
+A program két forrásból veheti a törzslapszámot: generálhatja automatikusan, vagy kiolvashatja a ''diak'' tábla megfelelő mezőjéből. Amennyiben ez utóbbi mező (ami a diák adatlapján módosítható) nem üres, úgy a program az itt található értéket jeleníti meg törzslapszámként, amúgy a generált törzslapszámot használja.
+
+==== Osztálynapló sorszáma ====
+
+Program által generált adat, a tanuló adott osztálynaplóbeli sorszáma.
+
+==== Feljegyzések személyi adatok változásához ====
+
+A program itt az 39/B jelű, "egyedi törzslap záradék" típusú, kötetlen szövegű záradékok szövegét jeleníti meg ebben a mezőben. Ilyen típusú záradékot használjunk tehát pl. név változás rögzítésére.
+
+===== Osztályzatok =====
+
+Amennyiben a tanulót az adott tanévben valamely tantárgyból nyújtott teljesítményét, illetve magatartását, szorgalmát osztályzattal értékelték/minősítették, a program ezt egyszerű táblázatos formában megjeleníti a nyomtatványon. A tantárgyi dicséretek nem itt, hanem a **Bejegyzések** szakaszban fognak megjelenni szöveges formában.
+
+===== Hiányzási adatok =====
+
+Az előző táblázat folytatásaként, szintén táblázatos formában jelennek meg a hiányzási adatok: igazolt és igazolatlan hiányzások, illetve késésekből összeadódó mulasztások.
+
+===== Szöveges minősítés =====
+
+Amennyiben a tanuló valamely tantárgyból nyújtott teljesítményét szöveges minősítéssel értékelték, a program ezt szöveges felsorolásként megjeleníti a törzslap nyomtatványon.
+
+===== Bejegyzések =====
+
+Bejegyzések alatt a törzslap esetén a különböző dicséreteket értjük. Ezek két forrásból kerülhetnek a nyomtatványra:
+ * Az osztályzatoknál jelölt dicséreteket a program szöveges formába öntve jeleníti meg
+ * A ''Bejegyzések/Új bejegyzés'' menüpont alatt "tanévvégi bejegyzés"-ként megjelölt bejegyzéseket a program ezen a helyen szöveges formában szintén megjeleníti
+
+===== Záradékok =====
+
+Az egyedi törzslap záradék kivételével itt jelenik meg az összes, a rendeletben törzslapban is megjelenítendőnek jelölt záradék. Ide kerül az utolsó helyre a tanuló továbbhaladására vonatkozó záradék is.
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml.txt
new file mode 100644
index 00000000..5acbe359
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml.txt
@@ -0,0 +1,16 @@
+====== Órarend import: aSc Timetables XML ======
+
+Ezt az import modult akkor használhatjuk, ha előzőleg az aSc számára [[ascExport|az adatokat átadtuk]] a MaYoR rendszerből, majd ezen adatok felhasználásával készítettünk órarendet. Az így elkészült órarendet az aSc ''Fájl/Export/aSc Órarend XML'' menüpontjában exportálhatjuk - megfelelő licence birtokában. Az exportáláshoz először le kell tölteni az export sablon állományt. Az importáláskor ezt az állományt kell felülírni, és felmásolni a szerverre.
+
+A modul az állományt beolvassa és tartalmát konvertálja UTF-8 kódolásúvá. Ezek után beolvassa az így kapott XML-ből a tanárok, osztályok, tárgyak és termek adatait (alapadatok). Következő lépésben az órák adatait dolgozza fel (lesson): megkeresi, hogy egy óra mely tanköröket érinti, és ezekhez milyen tanárok, illetve osztályok tartoznak. Ebben a lépésben többféle hibát is észlelhet a program:
+
+ * Hiányzó tanár: Ez azt jelenti, hogy az érintett tankörhöz a naplóban (MaYoR) nincs megadva tanár. A problémán könnyen segíthetünk: rendeljünk hozzá tanárt (tanár nélkül nem beszélhetünk kész órarendről - ha tehát tényleg nincs információnk a tanárról, akkor vagy halasszuk el a betöltést, vagy "kényszerítsük" a programot az adatok betöltésére a megjelenő opció bejelölésével. Ilyenkor a hibás adatok kivételével a többi óra adata bekerül az órarendbe)
+ * Hibás tanár hozzárendelés: Azt jelenti, hogy a tankör naplóban szereplő (első) tanára nem szerepel az aSc-ben megjelölt lehetséges tanárok között. Az ellentmondást valahogy fel kell oldanunk: vagy a naplóban kell javítanunk a tankör tanárát, vagy az aSc-ben kell hozzárendelni az érintett órához a naplóban megjelölt tanárt (is), esetleg közvetlenül javíthatjuk az XML állományt is - de akkor vigyázunk, hogy az érintett ''lesson'' bejegyzésen túl a ''card'' bejegyzéseket is javítanunk kell.
+ * Hibás osztály hozzárendelés: Kevésbé kritikus, mint az előzőek, de mindenképp valami hibára utal - nevezetesen arra, hogy a tankör naplóban szereplő (első) osztálya nem szerepel az aSc-ben megjelölt lehetséges osztályok listájában. A javítás az előzőekhez hasonlóan történhet a MaYoR felületen, az aSc-ben, vagy közvetlenül az XML állományban (csak a lesson bejegyzést érinti).
+
+Az órák adatainak feldolgozása után következnek a kártyák. Ezen belül az első lépés a lessonid elemzése. Ennek formátuma a korábbi MaYoR-aSc adatátadáskor kellett, hogy kialakuljon. Formája a következő:
+ t|b[óraszám]-tankorId[_tankorId ...]
+Például:
+ b2-243_233_126
+Az első karakter jelzi, hogy blokk, avagy tankör adata következik-e (a feldolgozás szempontjából mindegy, de könnyebb értelmezni így), ezek után jön (jöhet), hogy hány egymást követő órát kell lerakni az érintett tankörökből (szimpla, dupla, vagy tripla órák), végül egy kötőjel után az érintett tankör/tankörök azonosítója/azonosíytói következnek (egymástól aláhúzás karakterekkel elválasztva). A fenti példa jelentése tehát, egy olyan tankör blokk duplaórája, melybe a 243, 233 és 126 azonosítójú tankörök tartoznak. Ha a program a fent vázolttól eltérő formátumú lessonid-t talál, akkor hibaüzenetet generál - kényszerített módban az ilyen bejegyzéseket, kártyákat figyelmen kívül hagyja.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml_tankoeroek_nelkuel.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml_tankoeroek_nelkuel.txt
new file mode 100644
index 00000000..81372538
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/asc_timetables_xml_tankoeroek_nelkuel.txt
@@ -0,0 +1,20 @@
+====== aSc Timetables import modul - tankörök hozzárendelése nélkül ======
+
+Amennyiben az órarendet az aSc programmal készítettük, de nem a MaYoR-ból átadott adatokból, akkor használhatjuk ezt a beviteli módot.
+
+Használata előtt az aSc-ben fel kell vennünk a tanárok és termek mezői közé ''MaYoR ID'' néven a MaYoR rendszerben használt azonosítókat.
+Ezt a "Megadás" menüpont alatt, a megfelelő kategória (Tanárok, Termek), majd objektum (egy tanár vagy terem) kiválasztása után tehetjük meg,
+a "Módosítás" opció alatti "Szokásos mezők" lehetőség kiválasztásával.
+
+Ha az alapadatokat (tanárok, termek, osztályok, stb.) már felvettük a MaYoR rendszerbe, akkor az Órarend/ascExport segítségével könnyen
+megtudhatjuk a MaYoR ID-ket.
+
+Ha ezzel megvagyunk, akkor a szokásos export sablonnal készítsünk XML exportot az aSc-ből (Fájl/Export/aSc Timetables XML).
+Ehhez elõször le kell tölteni a MaYoR-ból az aSc export állományt. Az aSc-ben a fent megadott helyen a mentés során ezt a letöltött export XML
+fájlt kell felülírni. Utána az elkészült XML fájlból az elsõ sor(ok)ban lévõ <?xml version="1.0" encoding="windows-1250"?> sort törölni kell
+(bár az újabb verziók már automatikusan kihagyják ezeket a sorokat). Az így módosított file-t másoljuik fel a szerverre, mondjuk a ''/tmp'' könyvtárba,
+majd kezdhetjük a betöltést.
+
+A modul ellenőrzi a tanárazonosítók megfelelését és betölti az orarendiOra táblába a rekordokat. Az orarendiOraTankor táblát nem módosítja.
+Ez azt jelenti, hogy az órarend betöltése után még tanáronként végigmenve el kell végeznünk az órarendi órák tankörökhöz való hozzárendelését.
+A program azokat a kártyákat, melyek több tanárhoz vannak hozzárendelve külön bejegyzésekként veszi fel, illetve kezeli a dupla és tripla órákat is.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/ascexport.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/ascexport.txt
new file mode 100644
index 00000000..46bf9dcf
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/ascexport.txt
@@ -0,0 +1,102 @@
+====== Adatok exportálása az aSc Timetables számára ======
+
+Az [[http://www.asctimetables.com/|aSc Timetables]] órarendkészítő program számára az adatokat egy egyszerű szerkezetű XML formátumban tudjuk átadni. Ennek legenerálását végezhetjük itt. A két program belső felépítése lényegesen eltér egymástól, ami teljesen természetes, hiszen két különböző funkcióra készültek. Ugyanakkor az adatok átadásakor ez korlátozza a lehetőségeket.
+
+
+====== Mit tudunk átadni az aSc számára ======
+
+ * Alap adatok
+ * Tanárok
+ * Osztályok
+ * Diákok
+ * Tárgyak
+ * Termek
+ * Az órák (lessons)
+ * tankörök
+ * tankör blokkok
+ * és ezek különböző órabontásai (dulpa/tripla órák)
+ * Adott dátum szerinti órarend (card)
+
+Alapvetően három féle export készíthető:
+ - Alapadatok órarend nélkül + tankörök/blokkok szemináriumként + órabontások
+ - Alapadatok órarend nélkül + tankörök/blokkok egész osztályos órakén + órabontások
+ - Alapadatok adott dátum szerinti órarenddel (egy hét órarendje!) + tankörök/blokkok szemináriumként - órabontások nélkül
+
+===== Alapadatok =====
+
+Az alap adatok átadása a későbbi visszatölthetőség miatt fontos, ugyanis ilyenkor a MaYoR programból kapják az egyes objektumok az azonosítóikat.
+
+A diákok exportálása elsőre talán furcsának tűnhet, hiszen általában az órarend elkészítéséhez ezekre az adatokra nem szokott szükség lenni, inkább az osztályok különböző csoport bontásaival dolgozunk. Sajnos azonban ilyen jellegű adat a MaYoR naplóban nincsen, így a tényleges csoportnévsorokra építünk inkább, az órák tehát - az aSc szóhasználata szerint - szemináriumokként jelennek meg majd a programban.
+
+Ha ettől el kívánunk térni, akkor az a lehetőségünk marad csak, hogy az órákat mind egész osztályos órákként exportáljuk, majd az aSc-ben állítjuk be a csoportbontásokat.
+
+
+
+
+
+===== Az órák - lessons =====
+
+Az aSc óra fogalma nagyjából a naplóban használt tankörnek felel meg, de nem teljesen fedi egymást a két fogalom. Az aSc-ben külön óraként kell felvenni egy tankör szimpla, dupla, tripla, stb órás változatait - mert másfajta leteendő kártya lesz belőlük - a naplóban ilyen megkülönböztetésre nincs szükség. Másrészt az együtt mozgatandó tanköröket is külön óraként kell megjeleníteni az aSc-ben - erre szolgálnak a naplóban a tankör blokkok, amiket szintén exportálhatunk.
+
+==== Az exportálandó blokkok és óraszámaik megadása ====
+
+A program felsorolja a már definiált blokkokat. Ha a blokkok listáján szeretnénk változtatni, akkor azt a [[naplo:tanev:tankorBlokk|Tanév adatok/Tankörblokkok]] menüpont alatt tehetjük meg (vigyázzunk a megfelelő tanév kiválasztására!).
+
+A blokkoknál megadhatjuk, hogy melyik blokk, heti hány órával kerüljön exportálásra - ezen óraszámokat természetesen az érintett tankörök óraszámából levonjuk majd. A blokk exportálandó óraszáma ennek értelmében nem lehet nagyobb a blokkot alkotó tankörök óraszámainak legkisebbikénél. Ha a blokk export-óraszáma 0, akkor a blokk nem kerül exportálásra.
+A blokk óraszámánál megengedünk tört értéket is. A tankör óraszámából ilyenkor a megadott tört értéket vonjuk le, exportálásra viszont mindig a felfele kerekített érték kerül.
+
+==== Órabontás megadása ====
+
+Ha az órarendben dupla, tripla, vagy esetleg más többszörös óraként szeretnénk megjeleníteni valamely tankör bizonyos óráit, akkor
+ * válasszuk ki az érintett tankört a legördülő menüből.
+ * írjuk be a bontást, az óraszámokat + jelekkel összefűzve.
+ * nyomjuk meg az ''Ok'' gombot.
+
+Ha például egy 5 órás nyelvi csoport óráit két dupla és egy szimpla óraként akarjuk felvenni, akkor a tankör kiválasztása után az ''Órabontás'' mezőbe írjuk a ''2+2+1'' sztringet (elég a 2+2-t beírni, a szimpla órákkal való kitöltést a program elvégzi). Ha ugyanebben az esetben ''3+2+2''-t adunk meg, akkor a program hibaüzenetet ad és nem rögzíti az órabontást.
+
+Többszörös órákat nem csak tankrök esetén adhatunk meg, kiválaszthatunk blokkokat is, teljesen hasonló módon.
+
+Ha egy órabontást meg akarunk változtatni, akkor vegyük fel újra úgy, mintha most vennénk fel először - ez felülírja a korábbi beállítást.
+
+Órabontást (illetve órabontásokat) törölni a ''Törlendő bontás'' cimkéjű listából való kiválasztással, majd az ''Ok'' gomb megnyomásával lehet. Több tankör/blokk kijelöléséhez használjuk a ''Ctrl'' és ''Shift'' módosító gombokat.
+
+
+===== Az órarend =====
+
+Lehetőség van az órarend átadására is. Ez különösen apróbb módosítások elvégzésekor jöhet jól.
+
+Korlátai:
+ * Csak egy hét órarendjét exportálhatjuk. Ha több hetes az órarend, akkor a hetekről külön-külön készítsünk exportot.
+ * Az órarend exportálásakor nincs lehetőség a dupla, tripla és más többszötös órák exportálására - ezek amúgy is akkor hasznosak inkább, ha épp új órarendet készítünk.
+ * Órarend exportáláskor az órák csak szemináriumként exportálhatók, tehát az tankörök diáknévsorokkal együtt lesznek exportálva
+
+Következmény:
+ * Ha a tankörnévsorok ütközéseket tartalmaznak (egy diáknak egyszerre, egy időben több órán kellene jelen lennie), akkor az aSc-ben az érintett kártyák nem lesznek lerakva. Ez persze tekinthető egyfajta ellenőrzésnek is.
+
+===== Egyéb lehetőségek =====
+
+Az exportálás előtt további három paramétert adhatunk meg.
+
+==== Szakköri órák exportálása ====
+
+Alapértelmezés szerint a program csak a azokat a tanköröket exportálja, melyeknek ''jelenlet'' attribútuma ''kötelező'' értékű. Ha ettől eltérve a ''nem kötelező'' jelenlét attribútumú tanköröket is exportálni akarjuk (ilyenek tipikusan a szakkörök), akkor válasszuk ki ezt alehetőséget.
+
+==== Exportálás blokkok nélkül ====
+
+Ha nem akarjuk elveszíteni és nullára állítani a tankörblokkok export óraszámát, de valamilyen okból blokkok nélkül szeretnénk exportálni az órarendet, akkor válasszuk ki ezt az opciót.
+
+==== Tárgyak típusokra bontása ====
+
+Ezzel az opcióval a naplóban szereplő tárgyak mellett ezek "variánsait" is exportálhatjuk.
+
+Ha van például ''8.a angol nyelv Cs1'' nevű, és ''8.a angol nyelv Pr1'' nevű tankörünk (melyek az ''angol nyelv'' tárgyhoz vannak tehát rendelve) és szeretnénk ezeket az aSc-ben is megkülönböztethető módon felvenni, akkor ezt az opciót kiválasztva az első az aSc-ben ''angol nyelv Cs1'', a második ''angol nyelv Pr1'' tárgyhoz (subject) lesz rendelve.
+
+Fontos ez azért is, mert az aSc-ben egy diák egy tárgyból csak egy szemináriumnak lehet tagja, így például az előbbi példa két tankörében hiába lenne közös tag, az aSc az egyik tagságot "lenyelné".
+
+Hátránya, hogy a tárgyakra vonatkozó megszorításokat minden altípusra is rögzíteni kell az aSc-ben.
+
+Előfordulhat, hogy ezt a felbontást csak bizonyos tankörökre adjuk meg. Ekkor elég az ''__ASC_BONTANDO_TARGYAK'' konstansban megadni a bontandó tárgyak azonosítóinak vesszővel tagolt listáját a ''/var/mayor/config/module-naplo/config-[intézmény].php'' állományban:
+
+define('_ _ASC_BONTANDO_TARGYAK','1,12');
+
+Ha csak az 1 és 12 ''targyId''-vel rendelkező tárgyakat bontsuk. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarend.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarend.txt
new file mode 100644
index 00000000..68f92b5c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarend.txt
@@ -0,0 +1,3 @@
+====== Órarend ======
+
+Megjegyzés: Ha egy tanárhoz nincs egyetlen darab orarendiOraTankor összerendelt pár sem, akkor az órarendben redukált módon jelennek meg az órái. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendbetolto.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendbetolto.txt
new file mode 100644
index 00000000..12c4690b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendbetolto.txt
@@ -0,0 +1,31 @@
+====== Órarend betöltés ======
+
+Az órarend betöltésének lépései:
+
+ * Válasszuk ki az érintett tanévet (új tanév órarendjének betöltésekor könnyen lehet, hogy nem az aktuális tanév amire a betöltendő órarend vonatkozik)
+ * Válasszuk ki, hogy melyik órarendi hét órarendjét töltjük be (nincs lehetőség többhetes órarend betöltésére, csak hetenként külön!). Kiválaszthatunk fiktív órarendi hetet is - az ezekhez rendelt órarendeket speciális tanítási napokon használhatjuk.
+ * Válasszuk ki az órarend érvényességének dátum határait (legtágabb intervallum: első tanítási naptól az utolsó tanítási napig)
+ * Adjuk meg a betöltendő file elérési útját (előzetesen fel kell másolni a szerverre)
+ * Válasszuk ki a betöltendő állománynak megfelelő import modult. Az import lehetőségek:
+ * Microsoft Excel XML
+ * [[aSc Timetables XML]]
+ * [[aSc Timetables XML (tankörök nélkül)]]
+ * csv
+ * default
+
+Ha mindent beállítottunk, akkor megnyomhatjuk az ''OK'' gombot. Ha valamit kifelejtettünk, akkor a program hibaüzenetet küld.
+
+A betöltés közben keletkezhetnek egyéb hibaüzenetek, de ezek az import modultól függőek - a modulok leírásában tájékozódhatunk felőlük (ha an leírásuk egyáltalán). Ha a betöltés sikeres volt, erről informál minket a rendszer. Ha nem volt sikeres, de lehetőség van az adatok részleges betöltésére, akkor a rendszer kirak egy ''kényszerítve'' opciót. Mielőtt ezt a lehetőséget használjuk alaposan olvassuk el az import modul hibaüzeneteit, illetve leírását!
+
+===== Az adatok betöltésének folyamata =====
+
+Ha az adatok betöltésének nincs akadálya, akkor az a következő lépések során valósul meg:
+
+ * A korábbi orarendi bejegyzések törlése:
+ * A megadott időintervallumba eső, adott órarendi héthez tartozó bejegyzéseket töröljük.
+ * A megadott időintervallumot lefedő, adott órarendi héthez tartozó bejegyzések hatályát érvénytelenítjük a megadott intervallumon (tehát a megelőző és az azt követő időszakokra korlátozzuk).
+ * A megadott időintervallumba belenyúló, adott órarendi héthez tartozó bejegyzések hatályát szintén szűkítjük, hogy az megadott intervallumon érvényüket veszítsék.
+ * Az új órarendi bejegyzések felvétele, a megadott dátumhatárokkal és órarendi héttel.
+ * A hiányzó 'órarendi óra - tankör' hozzárendelések felvétel - ha ezekről van információ az adott import formátumban.
+
+Sikeres betöltés után - import modultól, import formátumtól függően - szükség lehet még az órarendi órák tankörökhöz rendelésére is. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendtankor.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendtankor.txt
new file mode 100644
index 00000000..6e2df6bb
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendtankor.txt
@@ -0,0 +1,9 @@
+====== Órarendi óra - tankör összerendelés ======
+
+Az [[hogyan:orarend|órarend]] alapvetően két táblából áll. Az ''orarendiOra'' tartalmazza az órarendi bejegyzéseket, az ''orarendiOraTankor'' pedig ezekhez a bejegyzésekhez rendel hozzá egy-egy tankört.
+
+Ezt a hozzárendelést végezhetjük el ezen az oldalon.
+
+Ehhez először válasszunk ki egy dátumot - hogy az órarendnek melyik változatát akarjuk épp megjeleníteni (érvényesség, illetve többhetes órarend, A-hét, B-hét, stb)
+
+Ezután válasszunk tanárt. Ha minden jól megy, akkor megjelenik a tanár adott dátum szerinti órarendje, az egyes bejegyzésekben a választható tankörök egy-egy legördülő menüben jelennek meg. A hozzárendeléskor a (''tanarId'', ''osztalyJel'', ''targyJel'') hármas lesz a kulcs, ami meghatároz egy tankört. Tehát olyan bejegyzésekhez, melyekben ez a három paraméter megegyezik nem lehet különböző tankört rendelni. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendteremmodositas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendteremmodositas.txt
new file mode 100644
index 00000000..eb443026
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/orarendteremmodositas.txt
@@ -0,0 +1,9 @@
+====== Teremmódosítás ======
+
+Ebben a menüpontban az órarendi órák terembeosztását tudjuk változtatni, méghozzá az __órarendbelit__ (vagyis az //orarendiOra// táblát). A változtatások **nem vonatkoznak** a Haladási napló óráira (vagyis az //ora// táblára).
+
+A tanév és a referenciadátum kiválasztása után a teremmódosítást tanárok szerint végezhetjük el. Válasszuk ki a tanárt, a hetet, a napot, az órát és megjelenik az aktuális órához rendelt terem.
+
+A teremlistában értelemszerűen a zölddel jelölt termek az üresek, a pirosak foglaltak.
+
+Amennyiben egy másik tanár, másik csoport által foglalt termet választunk, a változás létrejön és a mezők automatikusan a "kitúrt" tanár órájára állnak, hogy el ne felejtsünk az elfoglalt terme helyett másikat adni szegénynek... :-) \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/tanarorarend.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/tanarorarend.txt
new file mode 100644
index 00000000..9a5af868
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/tanarorarend.txt
@@ -0,0 +1,10 @@
+====== Összesített tanári órarend ======
+
+A már működő, teljesen feltöltött naplóból különböző célokra kinyerhető az összesített tanári órarend (hetenkénti) óriás lepedője.
+Négyféle formátumú exportra van lehetőség:
+ * csv
+ * xls
+ * txt
+ * html
+A tantárgyak neve mögötti számok, jelölések a tankör (//tankorId//) és a terem azonosítóját (//teremId//) jelölik!
+Az export fájlok tovább szerkeszthetők, importálhatók esetleg nyomtathatók (pl. teremajtókra, tanári szobába, stb.). \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/vegzosorarendlezaras.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/vegzosorarendlezaras.txt
new file mode 100644
index 00000000..3b577fb1
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/orarend/vegzosorarendlezaras.txt
@@ -0,0 +1,15 @@
+====== Végzős osztályok órarendjének lezárása ======
+
+Ha egyes végzős osztályok tanulmányi időszaka rövidebb, mint a többi osztályé, tehát nem tart a tanév végéig (pl. a tavaszi érettségi időszak miatt), akkor ezen az oldalon törölhetjük az ő óráikat egy adott dátumtól kezdeve az órarendből - ennek hatására a program nem tölti be a haladási naplóba ezeket az órákat.
+
+===== Hogy csináljam? =====
+
+ * Válasszuk ki azt a dátumot, amitől kezdve már nem kell betölteni a végzősök óráit. Tehát a kiválasztott nap az első olyan nap, amikor nem lesznek betöltve az órák.
+ * Jelöljük meg a lezárni kívánt osztályokat (csak a végzős osztályok közül választhatunk).
+ * Nyomjuk meg az OK gombot.
+
+===== Mi történik ekkor? =====
+
+A program alapvetően két dolgot csinál:
+ - Módosítja az órarendet, hogy a megjelölt osztályokat - és csak azokat - érintő órák az adott dátum után már ne legyenek az órarendben. Azok az órák, amik nem csak a megjelölt osztályokhoz vannak rendelve nem lesznek törölve. Ha pl. megjelöltük a 12.a és 12.b osztályt, akkor a 12.a, 12.b és 12.ab kezdetű tankörök törlődnek, de pl. a 12.ac, 12.abd vagy 11-12 kezdetűek nem.
+ - Azokból a tankörökből, melyekben az érintett osztályoknak vannak tagjai, de nem lettek törölve az órarendből, törli a program az érintett osztályok tagjait - a megadott dátumtól.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo.txt
new file mode 100644
index 00000000..8b3ee90f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo.txt
@@ -0,0 +1,3 @@
+====== Osztályozónapló ======
+
+A tanulók osztályzatainak megtekintése, kezelése. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/diak.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/diak.txt
new file mode 100644
index 00000000..e3656374
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/diak.txt
@@ -0,0 +1,11 @@
+====== Diák osztályzatai ======
+
+===== Diák kiválasztása =====
+
+A tanuló kiválasztásához használjuk az eszközsort! Válasszunk először osztályt, majd az osztály tagjai közül egy tanulót!
+
+===== Diák jegyeinek áttekintése =====
+
+A megjelenő táblázatban a tanuló egyes tárgyakból (nem tankörökből!!) szerzett osztályzatait láthatjuk. Egy jegyre állva leolvashatjuk, hogy melyik tankörben és mikor született, illetve a jegyre kattintva megnézhetjük annak egyéb adatait is ([[jegy|Jegy módosítása]]).
+
+A diák által meg nem írt dolgozatokat egy kötőjel jelzi a jegy helyén, erre állva láthatjuk melyik dolgozatról van szó, és mikor jelentették be az érintett dolgozatot. További részleteket tudhatunk meg, ha rá is kattintunk a kötőjelre [[dolgozat|--> dolgozat adatai]] \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/dolgozat.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/dolgozat.txt
new file mode 100644
index 00000000..376cbb9a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/dolgozat.txt
@@ -0,0 +1,41 @@
+====== Dolgozatok kezelése ======
+
+===== Dolgozat kiválasztása =====
+
+Az eszközsor segítségével válasszuk ki azt a tanárt, vagy osztályt, esetleg diákot, akinek a dolgozatai közül szeretnénk választani. A megjelenő listát tovább szűkíthetjük egy tankör kiválasztáaával.
+
+A listában felsorolt dolgozatok közül válasszuk ki, amelyik részleteire kíváncsiak vagyunk. Ezt a dolgozat nevére való kattintással tehetjük meg.
+
+
+===== Dolgozat adatainak megtekintése =====
+
+A kiválasztott dolgozat adatai a következők:
+ * Megnevezés
+ * Bejelentés dátuma
+ * A számonkérés tervezett dátuma
+ * A dolgozathoz rendelt tankörök
+ * A dolgozathoz tartozó jegyek - tankörönként
+
+A jegyekre állva leolvashatjuk azok naplóbakerülésének dátumát és az esetleges hozzáfűzött megjegyzéseket is. A jegyre kattintva megtekinthetjük a jegy további adatait ([[jegy|Jegy módosítása]]).
+
+===== Dolgozat adatainak módosítása =====
+
+Egy dolgozat adatait aktív tanév esetén az adminisztrátor módosíthatja, illetve az épp folyó tanévben a dolgozat tanköreinek tanárai.
+
+==== Egyszerű adatok módosítása ====
+
+Az első űrlapon a dolgozat alapadatai láthatóak. Ezek közül a dolgozat megnevezését és tervezett időpontját változtathatjuk meg.
+
+==== Tankörhozzárendelés módosítása ====
+
+A második űrlapon láthatjuk a dolgozathoz rendelt tankörök listáját, pontosabban a dolgozat tantárgyához tartozó tankörök listáját, köztük kijelölve a már hozzárendelteket.
+
+A kijelölt tankörök listáját bővíteni a Ctrl gomb nyomvatartása mellett lehet az egér kattintásával. Ha a Ctrl gombot nem tartjuk nyomva, akkor a korábbi kijelölés eltűnik és csak a kiválasztott tankör lesz megjelölve. A kijelöltek listáját szűkíteni hasonló módon, szintén a Ctrl gomb nyomvatartása mellett lehet.
+
+A tankormódosításnál fontos, hogy
+ * legalább egy tankört meg kell jelölnünk
+ * olyan tankört nem törölhetünk a listából, amelyikhez tartoznak jegyek - a dolgozat jegyei közül.
+
+==== Jegyek törlése (tervezett funkció) ====
+
+Jegyek törlésére pillanatnyilag csak egyesével van lehetőség, de a későbbiekben itt is lesz rá mód. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/jegy.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/jegy.txt
new file mode 100644
index 00000000..97add1e6
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/jegy.txt
@@ -0,0 +1,29 @@
+====== Jegy módosítása ======
+
+Ezen a lapon tekinthetjük egy-egy osztályzat részletes adatait:
+ * ki kapta a jegyet
+ * melyik tankörben
+ * milyen osztályzatot kapott
+ * milyen típusú számonkérésen
+ * mikor
+ * milyen megjegyzést fűztek a jegyhez
+ * melyik órához lett hozzárendelve a számonkérés
+ * mely dolgozathoz tartozik a jegy - amennyiben csoportos jegyről van szó
+
+
+
+
+===== Jegy és adatainak módosítása =====
+
+Jegyet módosíthat az adminisztrátor, ha a tanév nincs lezárve, illetve a jegy tanköréhez tartozó szaktanár - az épp folyó tanév során.
+
+Amennyiben van jogosultságunk a jegy módosítására (adminisztrátorok, vagy az adott tankör tanárai vagyunk), akkor az adatokat megváltoztathatjuk. A módosítások után a "Rögzít" gomb megnyomásával véglegesíthetjük a módosításokat.
+
+A diák nevére kattintva megnézhetjük az ő osztályzatainak összesítését ([[diak|Diák osztályzatai]]).
+
+Csoportos jegy esetén a "dolgozat" feliratva kattintva eljuthatunk a dolgozat adatainak kezeléséhez ([[naplo:osztalyozo:dolgozat|Dolgozatok kezelése]]).
+
+
+===== Jegy törlése =====
+
+Jegyet törölni a "Töröl" gomb megnyomásával, vagy a jegy típusának "törölt"-re állításával lehet.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szempontrendszer.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szempontrendszer.txt
new file mode 100644
index 00000000..2b024747
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szempontrendszer.txt
@@ -0,0 +1,32 @@
+====== Szöveges értékelés szempontrendszerének megadása ======
+
+A [[szovegesErtekeles#szöveges értékelés]]hez először el kell készítenünk egy szempontrendszert. Egy szempontrendszer értékelési szempontokat és ezekhez tartozó, előre definiált minősítéseket tartalmaz. Például egy szempont lehet magyar irodalom tárgyból: "Hangos olvasás", a hozzá tartozó minősítések pedig: "jól hangsúlyozott", "folyamatos", "akadozó", "szótagoló"... A minősítéseknek nem kell egymást kizáróknak lenniük.
+
+===== A szempontrendszer tágyának megadása =====
+
+Először azt kell meghatározzuk, hogy mire vonatkozik a szempontrendszer. Végeredményben a szöveges értékelés mindig egy diák adott tárgyban nyújtott teljesítményére vonatkozik majd, de a szempontrendszer lehet ennél általánosabb.
+
+Három dolog határozza meg, hogy mikor, milyen tárgyak/diákok esetén alkalmazzuk az adott szempontrendszert (és tervezünk egy negyediket):
+
+ * Az évfolyam - ez kötelező paraméter. Ha más paraméter nincs megadva, akkor az évfolyam összes tárgyára alkalmazható a szempontrendszer.
+ * A tárgy - nem kötelező, de ezzel szűkíthetjük, hogy csak az adott évfolyam ezen tárgyára legyen alkalmazható a szempontrendszer.
+ * A képzés - (fejlesztés alatt) nem kötelező, de tovább szükíthetjük az érintett tárgyak körét, hogy csak az adott képzési formában tanuló diákok értékelésénél lehessen használni a szempontrendszert
+ * Tárgy típus - (tervezett) nem lesz kötelező, a tárgyhoz hasonlóan működik majd, de annál kicsit általánosabb, lehet pl: nyelv, szakmai gyakorlat...
+
+Amikor egy diákot adott tárgyból értékelünk, akkor a rendszer megpróbálja kiválasztani a "legspecifikusabb" szempontrendszert, tehát azt, ami a legtöbb szempontból illeszkedik a diákra. Az egyezést évfolyam, tárgy (majd tárgy típus), képzés sorrendben vizsgálja. Ha van olyan, ami mindhárom szempontból stimmel, akkor azt választja, ha nincs, akkor először az évfolyam/tárgy párnak megfelelőt keres, ha ilyet sem talál, akkor az évfolyam/képzés párt vizsgálja, végül ha egyik sincs, akkor olyan szempontrendszert keres, ami az adott évfolyamra vonatkozik csak.
+
+===== A szempontok és minősítések megadása =====
+
+A szempontok és minősítések egy egyszerű szöveges formában adhatók meg:
+
+ Szempont1
+ Minoősítés1/1
+ Minoősítés1/2
+ Minoősítés1/3
+
+ Szempont2
+ Minoősítés2/1
+ Minoősítés2/2
+ ...
+
+A szempontok között üres sor kell legyen, egy-egy szemponthoz tartozó minősítések pedig sor kihagyás nélkül, külön-külön sorba kerülnek.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szovegesertekeles.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szovegesertekeles.txt
new file mode 100644
index 00000000..fdfa816e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/szovegesertekeles.txt
@@ -0,0 +1,11 @@
+====== Szöveges értékelés ======
+
+A tanulókat [[szempontRendszer#előre rögzített szempontrendszer]] alapján tárgyanként értékelhetjük.
+
+Értékeléshez az adott tárgyat tanító tanároknak, valamint az adminisztrátornak van joga. Az értékelés mindig az aktuális dátummal kerül rögzítésre. Ha egy nap folyamán többször értékelünk egy tanulót ugyanabból a tárgyból, akkor a korábbi (adott napi) értékelés elvész. Másképp fogalmazva egy tanuló egy tárgyból napi rendszerességgel értékelhető, sűrűbben nem.
+
+Az oldalon diákokat és tanköröket választunk ki, de az értékelés - ahogy az osztályzatok esetén - tárgyra vonatkozik. Azaz, ha egy diák egy tárgyat két tankörben is tanul, akkor e két tankörhöz ugyanaz az értékelés tartozik, így mindkét tankör tanára változtathatja azt.
+
+Ha egy diák több évfolyamra/képzésre is jár, akkor előfordulhat, hogy ki kell választanunk az értékelendő évfolyamot, illetve képzést is.
+
+Ha kiválasztunk egy dátumot, akkor a program a kiválasztott dátum napján, vagy korábban keletkezett értékelések között keresi meg a legkésőbbi keltezésűt és annak tartalmát mutatja meg (ha van ilyen). Ha van jogosultságunk az értékeléshez, akkor egy ilyen korábbi értékelésből kiindulva készíthetjük el az új értékelést. Ilyenkor tehát nem a korábbi értékelést módosítjuk - erre nincs lehetőség - hanem a korábbi értékelés módosításával készítjük el a mai nap értékelését.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/tankor.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/tankor.txt
new file mode 100644
index 00000000..19c1dd6a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/tankor.txt
@@ -0,0 +1,47 @@
+====== Osztályozónapló - tankör nézet ======
+
+Az osztályozónaplónak ezt a nézetét a tanárok használják, hiszen itt egy-egy tankör összes osztályzatát áttekinthetjük.
+
+==== Tankör kiválasztása ====
+
+Első lépésként a megfelelő tankört kell kiválasztanunk. Ezt két úton tehetjük meg: vagy egy tanárt választunk ki először az [[naplo:toolbar|eszközsoron]], vagy egy osztályt. Az első esetben a tanár tankörei, a második esetben az osztály tankörei jelennek meg új elemként az eszköztár alatt. Az osztály tanköreinek körét tovább szűkíthatjük, ha egy tanulót az osztály egy tagját választjuk ki.
+
+
+
+==== Osztályzatok megjelenítése ====
+
+Az oldal valójában nem a tankör jegyeit, hanem a tankör tanulóinak a tankör tárgyához tartozó jegyeit jeleníti meg.
+A diákok közt a tankör összes tanulóját felsorolja a rendszer, függetlenül attól, hogy az adott tanuló osztályozható-e az adott tankörben.
+
+A más tankörhöz tartozó jegyeket, illetve dolgozatokat barnás színezetű háttérszínük különbözteti meg a tankörhöz tartozó jegyektől.
+
+Fontos, hogy a tankör tagjait, illetve az érintett tanköröket és azok tanárait a program a megadott időintervallum alapján kérdezi le, így ezek az adatok a dátumok függvényében változhatnak.
+
+A megjelenített jegyre állítva a kurzort láthatjuk, hogy az adott jegy mikor, melyik tankörben született, valamint láthatjuk az adott tankörhöz tartozó tanárok listáját is.
+
+A jegy típusára a színe utal.
+
+A jegyen kattintva a jegy adatainak részleteit láthatjuk, illetve megfelelő jogosultsággal módosíthatjuk is.
+
+
+
+==== Osztályzatok beírása ====
+
+Év közben jegyet azok a tanulók kapnak, akik tankörbeli követelménye "jegy" (lásd [[naplo:intezmeny:tankorDiak|Tankör tagok kezelése]]).
+
+Az osztályzatok két típusba sorolhatók:
+ * Egyéni jegy (kis és normál jegy típus): egy-egy személy számára adható, nincs összefüggésben más jegyekkel. Ilyen lehet például egy felelet.
+ * Csoportos jegy (dolgozat, témazáró, vizsgajegy): a tankör összes tanulóját érintő számonkérések. Az így adott osztályzatok összetartoznak, számítható belőlük átlag.
+
+A jegyek beírásánál első lépésként válasszuk ki tanulónként a kívánt jegyet. Ezután, ha akarjuk megjelölhetjük, hogy az óra melyik tanítási órához kötődik (mikor történt a számonkérés). Csoportos jegy beírása esetén ki kell választanunk az értékelendő számonkérést, dolgozatot a jobb alsó sarokban. A dolgozatokat felvehetjük előre, vagy választhatjuk itt is az "új dolgozat" lehetőséget. Ilyen esetben javasolt a jegyek beírása után a dolgozat adatainak, elnevezésének megváltoztatása ([[dolgozat|dolgozatok módosítása]]).
+
+Az adatok módosítása után a kívánt jegytípusnak megfelelő gomb megnyomásával rögzíthetjük a jegyeket.
+
+A rögzített jegyek módosítása, törlése egyessével történhet, az adott jegyre való kattintás után ([[jegy|Jegy módosítása]]).
+
+
+==== Zárójegyek beírása ====
+
+Zárójegyet az a tanuló kaphat kinek tankör beli követelménye "jegy", vagy "vizsga" (lásd [[naplo:intezmeny:tankorDiak|Tankör tagok kezelése]]).
+
+Az osztályozó naplóban írhatjuk be a szemesztereket (féléveket) lezáró jegyeket is. Az adminisztrátor bármely zárójegyet módosíthatja, ha nincs lezárva a tanév. A szaktanárok mindig az épp aktuális, épp folyó szemeszterek lezárására jogosultak, persze a beírt jegy a szemeszter végéig szabadon módosítható. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/vizsga.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/vizsga.txt
new file mode 100644
index 00000000..c7c7939b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/osztalyozo/vizsga.txt
@@ -0,0 +1,33 @@
+====== Vizsgák kezelése ======
+
+Az oldal arra szolgál, hogy listázzuk, illetve kezeljük a különböző (záró) vizsgákat: osztályozó vizsgák, különbözeti vizsgák, javítóvizsgák, illetve beszámoltató vizsgák.
+
+===== Vizsgák listázása =====
+
+Ha az eszköztáron kiválasztunk egy diákot, vagy tárgyat, esetleg évfolyamot, akkor az ezekhez tartozó vizsgák listája jelenik meg.
+
+===== Vizsgajelentkezés =====
+
+Új vizsgát bejegyezni akkor lehet, ha kiválasztjuk az érintett diákot, a vizsga tárgyát és évfolyamát.
+
+A fentiek kiválasztása után megjelenő ''Vizsgajelentkezés'' űrlapban megadhatjuk a jelentkezés dátumát és kiválaszthatjuk a vizsga típusát (osztályozó vizsga, különbözeti vizsga, javítóvizsga, vagy beszámoltató vizsga). Végül az ''OK'' gomb megnyomásával vehetjük fel a vizsgát a listába.
+
+===== Vizsgaidőpont megadása =====
+
+Vizsgajelentkezés után a vizsgalistában megjelenő vizsga időpontját a lista ''vizsga'' oszlopában adhatjuk meg. A módosítást ezúttal is jóvá kell hagyni. Egyszerre több vizsga időpontját is megadhatjuk...
+
+===== Vizsga halasztása =====
+
+A vizsga halasztására akkor kerülhet sor, ha már ki van jelölve a vizsga, de még nem értékeltük. Ha a vizsga kijelölt időpontja még nem érezett el, akkor ez az alapértelmezett funkció, a vizsga időpontjától kezdve viszont az értékelésre van alaphelyzetben lehetőségünk, a halasztott vizsgaidőpont megadásához a jobb oldalon megjelenő ''halasztás'' feliratú gombra kattintva juthatunk el.
+
+Ha a halasztott vizsga időpontját megadtuk, akkor a rendszer megfelelő záradékkal látja el a vizsgát, majd felveszi az új időpontra kiírt vizsgát.
+
+===== Vizsga értékelése =====
+
+Vizsgát értékelni (jegyet adni) csak akkor lehet, ha már megadtuk a vizsga időpontját és a vizsga még nem lett se elhalasztva, se értékelve.
+
+Ha a vizsga időpontja már elmúlt, akkor vizsga értékelésre van alapértelmezetten lehetőségünk, egyéb esetben a jobb szélen megjelenő ''értékelés'' feliratú gombra kattintva juthatunk a megfelelő űrlapelemekhez.
+
+A vizsga értékeléshez meg kell adnunk a követelmény típusát (jegy, aláírás, stb) és a konkrét értékelést. Amennyiben nem választunk követelmény típust, úgy az összes értékelési forma lehetséges értéke megjelenik a legördülő listában. A módosításokat itt is jóvá kell hagyni az ''OK'' gomb megnyomásával.
+
+Több módosítás (vizsgaidőpont megadás, halasztás, értékelés) együtt is jóváhagyható, nem kell külön-külön végezni a módosításokat. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/small_faces.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/small_faces.txt
new file mode 100644
index 00000000..afaee412
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/small_faces.txt
@@ -0,0 +1,104 @@
+====== Arcok a naplóban ======
+
+Nem, linkjével ellentétben ez nem a **Small Faces** zenekar oldala, azt [[http://en.wikipedia.org/wiki/Small_Faces|itt]] találod! :-)
+
+===== Első feltöltés =====
+
+A napló egyik extra szolgáltatása, hogy a diákok neve mellé a **fényképük** is belekerülhet. Ezt a diákok úgy értelmezik, hogy immár biztos, miszerint a tanárok pofára fognak osztályozni, de jobban átgondolva beláthatjuk, hogy rendkívüli segítség a pedagógusok számára, hogy az új diákok arcát-nevét gyorsabban megtanulják, a helyettesítő Kolléga hamarabb azonosíthatja a tankör tagjait, illetve a titkárság, a rendszergazda munkája során könnyebben tudja, melyik diákról is van az adott esetben szó.
+
+Első lépésként meg kell szereznünk a diákok fényképeit. Lehet egy lelkes diákkal végigfotóztatni - célszerűen osztályonként, vagy valamilyen iskolai központi nyilvántartásból kiszedni, esetleg jobb minőségű osztályfényképről szkennelgetni...
+
+Lényeg, hogy **négyzetes arányú** képre van szükség. A naplóban kicsi képek jelennek meg, és a gyors oldalbetöltés végett okos dolog kisméretű, de még felismerhető képekkel dolgozni (az alapértelmezett 100x100 px-es képek, kb. 4-5 kB-osak).
+
+Egy roppant jó működő, wine-vel is tökéletesen működő program: [[http://www.oldapps.com/old_version_XnView.php|XnView 1.50]] (az újabb verziók kevésbé hatékony méretcsökkentéssel dolgoznak...) :-o
+
+A képek lehetnek **jpg, png, gif** formátumúak.
+
+A napló config-jában (///var/mayor/config/module-naplo/config.php//) állítsuk be, hogy a képek látszódjanak:
+
+ define('__SHOW_FACES', 'always');
+
+A napló main-conf.php állományában lehet a megjelenő képek kinézetét beállítani:
+
+ define('__SHOW_FACES_TYPE','classic'); // circle, square, classic
+
+A kész képeket töltsük fel valamilyen módszerrel a naplóba:
+
+==== Feltöltés a felületen ====
+
+A diák adatlapján - kitallózva a fényképet - egyesével feltölthetőek. A képet a napló a megfelelő könyvtárba teszi, és átnevezi a diák naplóbeli diakId-jére.
+
+==== Scp, ssh, putty és WinScp használata ===
+
+A képeket a diák naplóbeli //diakId//-jére (//intezmeny_[iskolarovidneve]// adatbázis //diak// tábla) kell nevezni (pl. //574.png//)
+A fenti programok, parancsok segítségével töltsük fel a képeket a ///var/mayor/download/private/naplo/face/[adotttanev]// könyvtárába (pl. ///var/mayor/download/private/naplo/face/2010//), a könyvtár(ak)nak adjunk **755**, a fényképeknek **644** jogosultságot, valamint tulajdonosnak állítsuk be a **www-data** user-t!
+
+ # chown www-data /var/mayor/download/private/naplo/face/2010/
+ # chmod 755 /var/mayor/download/private/naplo/face/2010/
+ # chown www-data /var/mayor/download/private/naplo/face/2010/*
+ # chmod 644 /var/mayor/download/private/naplo/face/2010/*
+
+A képek az __Osztályzónaplóban__, az __Üzenőben__, és a diák __adatlapján__ jelennek meg.
+
+=====Tanári fényképek=====
+
+A tanárok fényképeit - szintén az Id-jük (tanarId) szerint - a ///var/mayor/download/private/naplo/face/tanar/// könyvtárba töltsük fel, a fenti könyvtár- és fájljogosultságokkal.
+
+A tanárok fényképe az __Üzenőben__ jelenik meg.
+
+=====Fényképek a szülői oldalakon====
+
+Alapértelmezés szerint a szülői oldalakon nem jelennek meg a fényképek. A Szülő csak a saját gyereke(i) dolgaiban érdekelt - az ő arcukat meg úgyis ismeri =), de pl. az __Üzenőben__ csökkenti a technika adta személytelenséget, ha a tanárokkal (esetleg hébe-hóba a diákokkal) történő üzenetváltás során fényképet is lát a Szülő.
+
+A ///var/mayor/download/parent/naplo// könyvtár alatt hozzuk létre hasonlóan //...private// részhez a //face//, //tanar// és a tanévek könyvtárait!
+
+Ellenőrizzük, hogy megvan-e a **www-data** tulajdonos és a **755** jog!
+
+Hozzunk létre //symlink//eket az eredeti fényképekhez!
+
+ ln -s /var/mayor/download/private/naplo/face/tanar/* /var/mayor/download/parent/naplo/face/tanar/
+
+Ezzel megjelennek a tanári fényképek a szülői oldalakon.
+
+ ln -s /var/mayor/download/private/naplo/face/2011/* /var/mayor/download/parent/naplo/face/2011/
+
+Ezzel a 2011-es (2011/2012) tanév diákjainak fényképe jeleni meg a szülői oldalakon.
+----
+**FIGYELEM!** Ha új diák- vagy tanárkép kerül a naplóba (évközbeni belépéskor), az adott képe(ek)re a //sylink//(ek)et létre kell hozni!
+
+===== A képek átvitele az új tanévre =====
+
+Először a ///var/mayor/download/private/naplo/face/// könyvtár alatt hozzuk létre az új tanévnek megfelelő könyvtárat, pl. a //2011//-est:
+
+ # mkdir /var/mayor/download/private/naplo/face/2011
+
+Ellenőrizzük:
+
+ # ls -l /var/mayor/download/private/naplo/face/
+
+Másoljuk át a tavalyi összes képet! (Ez a lépés badarságnak tűnik, hiszen a tavaly végzettek képére már nincs is szükség, de egyszerűbb az új könyvtárból törölgetni, mint a régiből válogatva másolni. Persze, ha valakinek ez a szimpatikus... :-) )
+
+Természetesen megtehetjük, hogy nem töröljük a tavaly végzettek képeit, így minden évben (5 kB-os képekkel számolva) osztályonként cca. 150-200 kB-tal növekszik a könyvtár mérete. Hosszú távon azonban érdemes rendbe tenni a fájlokat...
+
+ # cp /var/mayor/download/private/naplo/face/2010/* var/mayor/download/private/naplo/face/2011/
+
+Ellenőrizzük a tulajdonost és a jogokat!
+
+ # ls -l /var/mayor/download/private/naplo/face/2011
+
+Ilyesmit kell látni:
+
+ rw-r--r-- 1 www-data mayor 3963 2010 okt 12 100.jpg
+
+Ha nem passzol, javítsuk (lásd fentebb)!
+
+A távozott diákok fényképeinek a szűrését többféleképp is el tudjuk végezni, ehhez mindenképp némi kézimunkára van szükség.
+Gyűjtsük ki az adatbázisból, vagy a felületen a diákexportból a még hozzánk járó diákokat:
+
+ mysql> SELECT diakId, viseltCsaladinev, viseltUtonev FROM diak WHERE jogviszonyVege IS NULL;
+
+A kapott listát és ///var/mayor/download/private/naplo/face/2011// tartalmát másoljuk egy táblázatkezelőbe, sorberendezés (és némi kozmetikázás után) pl. feltételes formázással jelöljük azokat a diakId-ket (sorokat) ahol nem egyezik a két érték (a fénykép-fájl neve és a diákId). Így viszonylag egyszerűen szűrhetjük a már nem hozzánk járó, illetve a fényképpel még nem rendelkező diákokat.
+
+===== Mentés =====
+
+Mivel a **MaYoR** "gyári" automata mentőszkriptje nem végzi a fényképek mentését, ezt feltétlen érdemes kézzel megtenni - legalább a tanév elején, a bejövő diákok fotóinak elkészülte után!
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/fogadoora.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/fogadoora.txt
new file mode 100644
index 00000000..a08c94d8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/fogadoora.txt
@@ -0,0 +1,22 @@
+====== Fogadóórák kezelése ======
+
+Az oldal fő funkciója, hogy a szülők számára lehetőséget adjon a fogadóórákra való előzetes jelentkezésre.
+
+===== Előzetes adminisztrátori teendők =====
+
+Először az include/modules/naplo/config-{iskola rövid neve}.php állományban kell beállítani, hogy egy fogadóóra látogatás tervezett hossza hány perc (_VIZITHOSSZ). A megadott érték 60 valamely pozitív osztója kell legyen, ajánlott érték 10-15 perc.
+
+Az adminisztátor vagy egy vezetőségi tag állíthatja be ezek után a következő fogadóóra tervezett időpontját (mettől-meddig).
+
+Ezen az oldalon egy áttekintő táblázat is megjelenik az egyes tanárok fogadoóráinak időpontjairól, valamint a kijelölt termekről. A tanárok nevére kattintva egy-egy tanár adatainak részleteit is megtekinthetjük. Az így elért oldalon, ha egy tanár a megadottól eltérő időpontban tudja csak megtartani a fogadoóráját, akkor lehetőség van az időpont egyedi megváltoztatására, illetve megadhatjuk tanáronként a fogadóóra helyszínét is.
+Időpontként akár múltbéli időpontot is megadhatunk - ezzel lényegében töröljük az adott tanár fogadóóráját.
+
+Fontos adminisztrátori teendő még a "Fogadóóra jelentkezés" időszak létrehozása a Napló/Admin/Szemeszterek menüpontban. Ez az az időszak, amikor a szülőknek lehetőségük van az időpontfoglalásra. Az időszak végének meghatározását jól fontoljuk meg, mivel az időszak lejárta után a szülő nem tudja megnézni, hogy kihez mikorra jelentkezett!
+
+===== Szülői jelentkezés fogadóórára =====
+
+Szülőként bejelentkezve egy egyszerű táblázatot látunk, melyben rádiógombok segítségével jelölhetjük meg, hogy melyik időpontban melyik tanárhoz szeretnénk menni. A program az esetleges ütközéseket ellenőrzi.
+
+===== Tanár nézet =====
+
+A jelentkezésekről a tanárok is képet kaphatnak saját oldalukon. Itt a már betöltött és a még szabad helyek listáját láthatjuk, már rögzített jelentkezés esetén a szülő és gyermeke/gyermekei nevével. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/munkaterv.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/munkaterv.txt
new file mode 100644
index 00000000..beeb7006
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/munkaterv.txt
@@ -0,0 +1,92 @@
+
+====== Éves munkaterv ======
+
+Az éves munkaterv határozza meg, hogy a tanév szorgalmi időszakában (ld. [[naplo:admin:tanevek|Admin/Tanévek]]) mely napok lesznek tanítási napok,
+tanítási szünetek, tanítás nélküli munkanapok, illetve speciális tanítási napok.
+
+===== Nap típusok =====
+
+==== Tanítási nap ====
+
+A tanátási nap számozott nap, melyen az tanítás alapvetően a betöltött órarend szerint zajlik. A tanítási nap fontos jellemzője, hogy melyik heti
+órarend szerint folyik aznap a tanítás - ha többhetes órarendet használunk. A program az órarendi heteket számozva jelöli, így ha egy intézményben
+kéthetes órarend szerint zajlik a munka, azaz van egy "A" és egy "B" hét, akkor az a programban "1. órarendi hét", illetve "2. órarendi hét" néven
+fog szerepelni.
+
+==== Speciális tanítási nap ====
+
+A speciális tanítási nap számozott nap, melyben a tanítás nem az órarend szerint zajlik, hanem valamilyen egyedi rend szerint. Ilyen egyedi tanítási rendet összeállíthatunk [[naplo:haladasi:pluszora|plusz óra]] felvétellel, vagy a [[naplo:haladasi:specialis|Haladási napló/Speciális nap]] menüpont alatt. Ilyen napokon az órarendi hét paraméternek nincs szerepe, ezért az automatikusan 0 értékre változik.
+
+==== Tanítás nélküli munkanap ====
+
+Minden tanévben az iskolák jogszabályban rögzített számú tanítás nélküli munkanapot szervezhetnek. Ilyen lehet egy konferenciákra szánt nap,
+egy egésznapos nevelési értekezlet, vagy továbbképzés, középiskolákban egyes érettségi napok, stb. Ezeken a napokon tehát nincs tanítás, így
+az órarendi hét paraméternek sincs szerepe (automatikusan 0 értéket vesz fel), a nap viszont beleszámít a munkanapok közé.
+
+==== Tanítási szünet ====
+
+A tanítási szünetek nem számítanak be a munkanapok közé. Ezen napok esetén sincs jelentése az órarendi hét paraméternek, ezért az ebben az esetben is
+automatikusan 0-ra változik.
+
+===== Párhuzamos munkatervek használata =====
+
+Egyes intézményekben szükség lehet arra, hogy több különböző munkaterv fusson egymással párhuzamosan. Például abban az esetben, ha az intézményben
+általános iskolai és gimnáziumi képzés is folyik, akkor a kétféle képzésnek különböző munkarendje kell legyen, hiszen eltér a tanítási napok előírt
+száma a kétféle képzésben.
+
+Az ilyen és ehhez hasonló esetek kezelésének érdekében lehetőség van arra, hogy több munkatervet hozzunk létre. A munkaterveket osztályokhoz
+rendelhetjük, a napok típusát, a napokhoz fűzött megjegyzéseket külön-külön állíthatjuk a párhuzamos munkatervekben. **Az egyes napokhoz rendelt
+órarendi hetek azonban nem térhetnek el a különböző munkatervekben!** Az óranrend tehát mindig az egész intézményre vonatkozik, együtt kezelendő.
+
+===== Munkaterv inicializálása =====
+
+Ezt a műveletet a tanév megnyitása után végezzük általában, eredménye egy egxetlen munkatervből álló alapállapot elérése. Az inicializáláshoz négy fontos
+paramétert kell megadnunk:
+
+ * Órarendi hetek száma: hány hetes lesz az órarend, tehát minden hét azonos órarenddel zajlik, vagy kétféle hét, "A" és "B" hét váltogatja egymást, stb
+ * Tanítási napok száma: jogszabályban szabályozott számérték
+ * Tanyítás nélküli munkanapok száma: jogszabályban megadott számérték
+ * Végzősök utolsó tanítási napja: a "tanév rendje" rendeletben megadott dátum
+
+**Fontos:** A munkaterv inicializálása törli az esetleg már felvett munkaterveket!
+
+===== Napok száma =====
+
+A napok száma fülön rövid összefoglalót kapunk arról, hogy az épp kiválasztott munkatervben az egyes típusú napokból mennyi van. Ennek segítségével
+ellenőrizhetjük, hogy megfelel-e munkatervünk a jogszabály előírásainak.
+
+===== Órarendi hetek hozzárendelése =====
+
+Adott dátumhatárok között frissíthetjük az órarendi hetek napokhoz rendelését. A hozzárendelés mindig az 1. héttel indul és a paraméterként megadott
+hetek váltják majd egymást ciklikusan. **Az órarendi hetek hozzárendelése mindig az összes munkatervre együtt vonatkozik!**
+
+===== Munkaterv-osztály összerendezés =====
+
+A munkatreveket osztályokhoz rendelhetjük, mindegyik osztályt pontosan egy munkatervhez.
+
+===== Csengetési rend =====
+
+Új feature-ként megjelent a __normáltól eltérő csengetési rendek__ használata.
+
+A munkatervben az alapértelmezett beállítások:
+ * minden tanítási napon 'normál' csengetési rend;
+ * minden speciális napon, tanítás nélküli napon, szorgalmi időszakon kívüli munkanapon és a tanítási szünet napjain nincs csengetés;
+
+Ötféle (4+1) csengetési rend használható: 'normál', 'rövidített', 'speciális', 'rendhagyó' és a 'nincs'... Ezekhez az elnevezésekhez a helyi szokásoknak, hagyományoknak megfelelően beállítható a csengetési rend az alábbiak szerint:
+
+A csengetesiRend (intezmeny_[iskolarovidneve]/csengetesiRend tábla) kell az alábbiak szerint feltölteni a (UTF8 kódolású, tabulátorokkal tagolt, szöveghatároló nélküli) csv fájlt:
+
+Fejléc (mezőnevek):
+
+ nap | ora | tolTime | igTime | telephelyId | csengetesiRendTipus
+
+ * A //nap// 1-5 közti szám, hétfő=1, stb. (ha nem visszük fel, akkor az adott csengetés minden napra érvényes lesz);
+ * Az //ora// a napi tanítási órát jelöli;
+ * A //tolTime// a becsengetés ideje óó:pp:ss formátumban;
+ * Az //igTime// a kicsengetés ideje óó:pp:ss formátumban;
+ * A //telephelyId// a telephely naplóbeli száma;
+ * A //csengetesiRendTipus// lehet 'normál', 'rövidített', 'speciális', 'rendhagyó', 'nincs'.
+
+A kész állományt töltsük fel a szerverre és az **Admin/Import** menüben töltsük be a //csengetesiRend// táblába! Kulcsmezők: ora, telephelyId, csengetesiRendTipus.
+
+A csengetési rend az **Órarend**ben jelenik meg, egyéb szerepe (pl. csengetőóra vezérlése... :-) ) nincs. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorblokk.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorblokk.txt
new file mode 100644
index 00000000..95dff903
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorblokk.txt
@@ -0,0 +1,10 @@
+====== Tankör blokkok ======
+
+Két tankör abban az esetben kerülhet egy tankörblokkba, ha egyszerre, egy időben lehet órájuk. Ennek feltétele, hogy
+ * Nincs olyan diák, aki mind a két tankörben benne lenne
+ * A tankörök tanára sem közös (ezt a program még nem ellenőrzi!!)
+
+
+==== Hol használjuk a tankör blokkokat? ====
+
+A tankörblokkokra alapvetően órarend készítéskor lesz szükség (ld. [[naplo:tanev:ascexport|ascExport]]), de használjuk a választható tankörökre való jelentkezések kezelésekor is. A tankörblokkokra tekintettel van az összes tankörnévsort változtató művelet is. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorcsoport.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorcsoport.txt
new file mode 100644
index 00000000..846d4a2e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanev/tankorcsoport.txt
@@ -0,0 +1,26 @@
+====== Tankör csoportok ======
+
+Két tankör akkor kerülhet egy tankörcsoportba, ha azonos a névsoruk.
+
+
+==== Hol használjuk a tankör csoportokat? ====
+
+ * A tankörnévsorok módosításakor elég egy tankörcsoport egyik tankörében elvégezni a szükséges módosításokat (tanuló felvétele, illetve kiléptetése), a tankörcsoport többi tankörében a módosításokat a program automatikusan elvégzi.
+
+ * A haladási naplóban az azonos tanár által tanított, egy tankörcsoportba tartozó tankörök között lehet váltania a szaktanárnak. Például egy magyartanár választhat, hogy irodalom, vagy nyelvtanórát tart-e, ha a két tankör egy csoportba tartozik. Vagy egy osztályfőnök, aki egész osztályos csoportban történelemtanára is az osztályának, akkor választhat, hogy történelem, vagy osztályfőnöki órát tart egy adott időpontban.
+
+===== Új tankörcsoport =====
+
+Új tankörcsoport felvételéhez adjunk egy (lehetőleg egyedi) nevet a csoportnak és jelöljük meg a csoporthoz tartozó tanköröket. A rendszer csak akkor veszi fel az új csoportot, ha a megjelölt tankörök névsorai megegyeznek. Épp ezért - ha elsőre nem sikerül a csoport felvétele - érdemes először egy tankörrel felvenni a csoportot, majd újabb tanköröket hozzávenni - így kiszűrhető a hiba.
+
+===== Tankörcsoport módosítás =====
+
+Módosíthatjuk a tankörcsoport nevét, és a tankörcsoportba tartozó tankörök listáját. A lista bővítésekor szokás szerint a Ctrl gombot nyomva tartva kattinthatunk a hozzáadandó (vagy épp eltávolítandó) tankörök nevére.
+
+Ha az új lista ütköző tanköröket tartalmaz, akkor a korábbi tankörlista áll vissza.
+
+A ''Tankörök'' felirat mellett, a jobb felső sarokban található ''x''-re kattintva törölhetjük a tankörcsoportot (a benne szereplő tankörök természetesen sértetlenül megmaradnak, csak a csoportosítást töröljük ilyenkor).
+
+===== Tankörcsoportok keresése =====
+
+Ez a funkciót akkor használhatjuk, ha a tankörök névsora már adott és e névsorok alapján szeretnénk tankörcsoportokat kialakítani. A legtöbb esetben erre nincs szükség, hisz épp azért vesszük fel a tankörcsoportokat, hogy a tagok felvételét megkönnyítsük, meggyorsítsuk.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetinfo.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetinfo.txt
new file mode 100644
index 00000000..ffc7d91a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetinfo.txt
@@ -0,0 +1,15 @@
+
+====== Tanmenet részletei ======
+
+Ezen az oldalon csak tűjékozódhatunk, nincs mód semmilyen módosításra: megnézhetjük egy kivűlasztott tanmenet adatait.
+
+A megjelenített adatok:
+ * évfolyam
+ * tárgy
+ * éves óraszám
+ * tanmenet neve
+ * készítő tanár
+ * készítés dátuma
+ * jóváhagyott tanmenet-e
+ * A tanmenet témakörei (a rászánt óraszámokkal)
+ * hozzárendelt tankörök listája
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetleadas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetleadas.txt
new file mode 100644
index 00000000..4e5ee348
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetleadas.txt
@@ -0,0 +1,12 @@
+
+====== Tanátok eddig leadott/nem leadott tanmeneteinek száma ======
+
+A vezetőség ezen az oldalon tájékozódhat az tanmenet leadás pillanatnyi helyzetéről, pontosabban
+kap egy listát, melyben minden tanárral kapcsolatban láthatja, hogy
+
+ * hány tanköréhez nem rendelt még tanmenetet ("hiányzó")
+ * hány tanköréhez rendelt már jóváhagyott tanmenetet ("jóváhagyott")
+ * hány tanköréhez rendelt még jóváhagyatlan tanmenetet ("ellenőrizetlen")
+
+A tanár nevére kattintva eljuthatunk a [[tanmenetTankor|Tanmenetek tankörhöz rendelése]] oldalra, ahol részletesen is tájékozódhatunk
+az adott tanár tanköreiről, illetve hozzárendelt tanmeneteiről. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetmodositas.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetmodositas.txt
new file mode 100644
index 00000000..45bc6937
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenetmodositas.txt
@@ -0,0 +1,58 @@
+
+====== Tanmenet módosítása ======
+
+A tanmenet módosítás alapvetően két dologot takar:
+ * bizonyos alapadatok módosíthatók
+ * módosíthatók a témakörök és az ezekre szánt óraszám
+
+===== Alapadatok módosítása =====
+
+Módosítható a tanmenet évfolama, éves óraszáma és neve, illetve a vezetőség és admin számára itt van lehetőség a tanmenet jóváhagyására is.
+Nem módosítható ugyanakkor a tanmenet tárgya, a készítő tanár neve, a készítés dátuma és persze a tanmenet azonosító száma sem.
+
+Fontos: az óraszám csökkentésével előállhat olyan eset, hogy a tanmenet témaköreinek össz óraszáma nagyobb lesz, mint az előírt összóraszám.
+Ilyen esetben a program a már "kilógó" témakörök óraszámát pirossal kiemeli, hogy ezzel is figyelmeztessen a hibára. A proram mást nem tesz, nem tehet -
+rajtunk múlik, hogy a hibát javítjuk-e.
+
+===== Témakörök kezelése =====
+
+Itt látjuk a már felvett témakörök listűját - ha vannak ilyenek -, és egy új témakör felévtelét szolgáló üres sort (drapp).
+
+==== Új témakör felvéte ====
+
+Új témakör felvételéhez először válasszuk ki a témakörre szánt óraszámot, majd írjuk le röviden a témakört. Ezek után, ha a fókusz elkerül a beviteli mezőről
+(pl. megnyomjuk a ''Tab'' gombot, vagy elkattintunk az egérrel valahova máshova), akkor a prorgram felveszi ezt az új sort a felette levő listába, beilleszti
+az óraszámok sorába - de fontos tudnunk, hogy az új támakör ekkor még az adatbázisban nem rödgzült. **A módosítások rögzítéséhez minden esetben a lista alján
+található "OK" gombot kell megnyomni!**
+
+Út témakört mindaddig tudunk a fentiek szerint felvenni, ameddig el nem fogy a teljes tanmenethez rendelt óraszám. A legördülő menüben minden esetben csak
+annyi óra kijelölésére van lehetőség, amennyi még szabadon maradt. Ha a szabad órák száma 0-ra csökkent, akkor vagy valamelyik témakör óraszámának csökkentésével,
+vagy valamely témakör teljes törlésével szabadíthatunk fel órákat az új témakör számára.
+
+==== Témakörök sorrendje ====
+
+A felvett témakörök sorrendje egyszerűen egérrel, "húzd és ejtsd" módon változtatható. A sorok a bal szélső színes téglalapnál gofhatók meg, majd "vonszolhatók"
+a megfelelő helyre. A program minden módosítás után újraszámozza az órákat.
+
+Fontos megjegyezni, hogy a sorrend változtatás sem rögzül automatikusan az adatbűzisban! **A módosítások rögzítéséhez minden esetben a lista alján
+található "OK" gombot kell megnyomni!**
+
+==== Témakör módosírása ====
+
+Egy-egy témakörrel kapcsolatban két dolgot lehet módsítani: a hozzárendelt óraszámot, illetve a témakör leírását.
+
+Fontos: ha a témakör leírását töröljük, vagy az óraszámot 0-ra állítjuk, akkor a következő adatrögzítéskor a témakör törlődik!
+
+Az óraszám beállításakor csak akkorára növelhetjük az óraszámot, hogy az még beférjen a tanmenet össz óraszámába.
+
+**A módosítások rögzítéséhez - mint minden esetben - most is a lista alján található "OK" gombot kell megnyomni!**
+
+==== Témakör törlés ====
+
+Témakör törlésére használjuk a sorok jobb oldalán található X jelű, piros hátterű, kerek gombot.
+
+A tényleges törlés csak a lista alján található "OK" gomb megnyomásakor történik!
+
+Témakört törölhetünk úgy is, hogy óraszámát 0-ra állítjuk és/vagy a témakör leírását töröljük, üresre állítjuk.
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenettankor.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenettankor.txt
new file mode 100644
index 00000000..8c13ed83
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/tanmenettankor.txt
@@ -0,0 +1,44 @@
+
+====== Tanmenetek tankörhözrendelése ======
+
+Ezen az oldalon a megfelelő időszakban a szaktanár, vagy a vezetőségi tag hozzárendelhet egy-egy már meglévő tanmenetet a tankörökhöz,
+a szaktanár ezen kívül létrehozhat új tanmenetet is - akár egy már létező tanmenet másolataként, hogy azt módosítsa. Az adminisztrátornak
+időszakon kívül is van joga hozzárendelni, de újat nem tud létrehozni.
+
+A táblázat egy-egy sorában egy-egy tankörrel kapcsolatban tudunk tájékozódni, illetve módosításokat végrehajtani.
+
+Az első cellában találjuk a tankör nevét és azonosító számát. Ez után következik a hozzárendelhető tanmeneteket tartalmazó legördülő menü.
+Hozzárendelhetőnek tekintünk minden a tankörrel azonos tárgyhoz tartozó tanmenetet - mást nem ellenőriz a program.
+A legördülő menüben a már hozzárendelt tanmenet van alaphelyzetben kiválasztva - ha van ilyen.
+
+==== Módosítás / Részletek ====
+
+A következő gomb kétféle felirattal szrepelhet: módosítás, illetve részletek. Az előbbi akkor szerepel, ha a legördülő menüben kiválasztott
+tanmenet a felhasználó jogosultságaival módosítható (szaktanár számára akkor, ha ő írta a tanmenetet és az még nincs jóváhagyva), egyéb
+esetben a második felirat szerepel.
+
+Az egeret a gomb fölé vive megjelennek az épp kiválasztott tanmenet részletei (lényegében a "Tanmenet részletei" menüponttal megegyező tartalom).
+
+A gombon kattintva "módosítás" felirat esetén a [[tanmenetModositas|Tanmenet módosítása]], míg "részletek" felirat esetén a [[tanmenetInfo|Tanmenet részletei]]
+oldalra jutunk.
+
+==== Hozzárendelés ====
+
+Megelelő jogosultság esetén a következő gomb a "hozzárendelés" felirattal jelenik meg. A gomb megnyomásával a legördülőmenűben
+kiválasztott tanmenet tankörhöz való hozzárendelését rögzíthetjük.
+
+==== Új tanmenet létrehozása a kiválasztott alapján ====
+
+Az adott tankör tanára egy már létező tanmenet alapján készíthet új tanmenetet a tanköre számára. Ezt akkor is megteheti, ha a kiválasztott tanmenetet
+másik kolléga készítette. A gomb megnyomásával készül egy másolat a kiválasztott tanmenetről (amit mellesleg rögtön hozzá is rendel a rendszer a tankörhöz),
+majd a [[tanmenetModositas|Tanmenet módosítása]] oldalra navigál a program, ahol rögtön módosíthatjuk is a tanmenet adatait, témaköreit, óraszámait.
+
+==== Új tanmenet létrehozása ====
+
+Az adott tankör tanára létrehozhat egy teljesen új tanmenetet is. A gomb megnyomásával az [[ujTanmenet|Új tanmenet létrehozása]] oldalra jutunk, ahol első lépésként
+a tanmenet alapvető adatait megadva létrehozzuk a tanmenetet, amit a rendszer rögtön ez után hozzá is rendel a tankörhöz, majd továbblép a
+[[tanmenetModositas|Tanmenet módosítása]] oldalra, ahol felvehetjük a tanmenet lényegi részét, a témaköröket, óraszámokat.
+
+
+
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/ujtanmenet.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/ujtanmenet.txt
new file mode 100644
index 00000000..63e0a946
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/tanmenet/ujtanmenet.txt
@@ -0,0 +1,7 @@
+
+====== Új tanmenet felvétele ======
+
+Új tanmenetet a szaktanárok vehetnek fel - természetesen saját tantárgyaikhoz.
+
+A tanmenet létrehozásához válasszuk ki a tárgyat, évfolyamot (ha még nincs kiválasztva), majd adjuk meg a tanmenet éves óraszámát, nevét.
+Az űrlap kitöltése és jóváhagyása után a program a [[tanmenetModositas|Tanmenet módosítása]] oldalra visz, ahol felvehetjük a tanmenet témaköreit.
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/naplo/toolbar.txt b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/toolbar.txt
new file mode 100644
index 00000000..180fd448
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/naplo/toolbar.txt
@@ -0,0 +1,17 @@
+====== Eszköztár ======
+
+A napló modulban a menü alatt minden oldalon megjelenik egy speciális sáv - az eszköztár, vagy eszközsor.
+Itt láthatjuk az épp megjelenő oldal nevét (pl. Haladási napló, Osztályozó naplo...), a kiválasztott intézmény rövidítését és a kiválasztott tanév kezdetének évét, végül az esetleg megjelenő, az oldal használatát megkönnyítő eszközöket.
+
+===== Eszközök =====
+
+Az eszközök általában egy-egy legördülő menüből álnak, melyek segítségével kiválaszthatjuk, hogy az adott oldal milyen paraméterekkel dolgozzon (pl. kiválasztjuk, hogy a Haladási napló melyik osztály óráit jelenítse meg, vagy hogy az osztályozó naplóban melyik tanuló jegyeit szeretnénk látni).
+
+A használható eszközök a következők
+ * Osztály kiválasztása
+ * Tanár kiválasztása
+ * Diák kiválasztása
+ * Tankör kiválasztása
+ * Dátum kiválasztása
+ * ...
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/portal/hirek/hirekadmin.txt b/mayor-orig/mayor-wiki/wiki/data/pages/portal/hirek/hirekadmin.txt
new file mode 100644
index 00000000..0cf6525c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/portal/hirek/hirekadmin.txt
@@ -0,0 +1,25 @@
+====== Hírek ======
+A **hír** a napló külső (bejelentkezés nélküli), vagy belső (bejelentkezés utáni) kezdőlapján megjelenő, mindenki számára olvasható rövid (?) szöveges információ. Előnye, hogy tág célcsoportnak szól (diákok, tanárok...), mindig szem előtt van, megjelenési időpontja finoman szabályozható.
+A hírek publikálásának feltétele, hogy az adott felhasználó (továbbiakban Szerkesztő) a //hirekadmin csoport// tagja legyen.
+===== Hír beküldése =====
+Bármely felhasználó (diák, szülő is) tud hírt beküldeni publikálásra (bejelentkezés után a Védett modulok->Hír beküldés pontban).
+Célszerű a felhasználókat rávenni arra, hogy beküldéskor a szöveg végére írják a megjelentetés dátumát, és a célcsoportot (kik lássák az üzenetet).
+Rögzítés után a beküldött hírt a Szerkesztő a saját felületén már megtalálja.
+===== Hír szerkesztése, publikálás =====
+A Szerkesztő a Kezdőlapon, a Hírek adminisztrálása menüben tudja a már beküldött, vagy épp aktuális híreket szerkeszteni. A nagy **+** gomb nyitja ki a teljes listát.
+A megjelenő listában a színek jelentése:
+ * fehér: érvényes hír (aktuális vagy jövőbeni);
+ * kék: lejárt határidős;
+ * lila: beküldött, még nem rendbe tett elem;
+A szerkeszteni kívánt hírre kattintva módosíthatók, illetve beállíthatók a megjelenés paraméterei:
+ * mettől meddig legyen érvényes;
+ * látszik/nem látszik;
+ * külső/belső hír (azaz bejelentkezés nélkül, vagy csak azután legyen olvasható);
+ * célcsoport: tanár/diák/titkárság/egyéb (ha a hírt a szülők felé is szeretnénk megjeleníteni, vagy külső hírt válasszunk, vagy ne jelöljük be a célcsoportok checkbox-ait...)
+
+Célszerű gyors helyesírás-ellenőrzést végezni, a felesleges részeket (pl. a szerkesztőnek szóló üzenet, hogy ki, mikor láthassa a hírt) kitörölni.
+A hírek esetében a szöveg-, vagy karakterformázást a szokásos HTML-tagekkel (<font...>; <b> <br /> stb.) végezhetjük.
+
+A formázáshoz egy kis "színes" segítség: [[http://darsh.uw.hu/modules.php?name=Content&pa=showpage&pid=4|Darshi]]
+
+A lap alján látható a kész hír. \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/portal/telepites.txt b/mayor-orig/mayor-wiki/wiki/data/pages/portal/telepites.txt
new file mode 100644
index 00000000..714e227c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/portal/telepites.txt
@@ -0,0 +1,75 @@
+
+====== Portál modul telepítése ======
+
+ * Hozzunk létre egy ''hirekadmin'' csoportot és értelemszerűen vegyünk fel bele tagokat! (Felhasználói adatok/Új csoport)
+
+ * Szerkesszük a ''/var/mayor/config/main.conf'' állományt! vegyük fel a frissítendő modulok közé (ne a végére) a portál modult is.
+
+ MODULES="mayor-base mayor-portal mayor-naplo"
+
+ * Frissítsük a rendszert. Ezzel letöltődnek a portál modul állományai is.
+
+ # mayor update
+
+ * Hozzuk létre a portál modul adatbázisát (előtte írjuk be a file-ba a ''%MYSQL_PORTAL_DB%'', ''%MYSQL_PORTAL_USER%'' és ''%MYSQL_PORTAL_PW%'' helyére a mysql
+ adatbázist (''mayor_portal''), usert (''mayor_portal'') és a user jelszavát):
+
+ # cp /var/mayor/install/mayor-portal/mysql/mayor-portal.sql /tmp/mayor-portal.sql
+ # editor /tmp/mayor-portal.sql
+ # cat /tmp/mayor-portal.sql | mysql -p
+
+ * Most a portál modul konfigurációs állományának létrehozása...
+
+ cp /var/mayor/config/module-portal/config.php.example /var/mayor/config/module-portal/config.php
+
+ * ... és szerkesztése következik (különös tekintettel a jelszóra - amit az előbb is használtunk)
+
+ # mcedit /var/mayor/config/module-portal/config.php
+
+ ---------------------------
+ $MYSQL_DATA['portal']['user']= 'mayor_portal_adm';
+ $MYSQL_DATA['portal']['pw']= '**jelszó**';
+ $MYSQL_DATA['portal']['db']= 'mayor_portal';
+
+ define('__PORTAL_CODE','demo');
+ ---------------------------
+
+ * A hozzáférési szintenkénti kezdőlapok beállítása
+
+ # mcedit /var/mayor/config/private-conf.php
+ ---------------------------
+ $DEFAULT_PSF['private'] = array('page'=>'portal', 'sub' => 'portal', 'f' => 'portal');
+ ---------------------------
+
+ # mcedit /var/mayor/config/parent-conf.php
+ ---------------------------
+ $DEFAULT_PSF['parent'] = array('page'=>'portal', 'sub' => 'portal', 'f' => 'portal');
+ ---------------------------
+
+ # mcedit /var/mayor/config/public-conf.php
+ ---------------------------
+ $DEFAULT_PSF['public'] = array('page'=>'portal', 'sub' => 'portal', 'f' => 'portal');
+ ---------------------------
+
+ * Testreszabás\\
+Lehetőségünk van arra, hogy az alapértelmezettől eltérő szerkezetű kezdőlapot készítsünk és ebbe építsük be a portál szolgáltatásait.
+
+ * Szerkesszük a portál konfigurációs állományát - adjunk meg saját portál kódot (lehet ez pl. az intézmény rövid neve is)
+
+ # mcedit /var/mayor/config/module-portal/config.php
+
+ ---------------------------
+ define('__PORTAL_CODE','sajat');
+ ---------------------------
+
+ * Hozzuk létre a demo oldalak alapján a saját kezdőlapjainkat:
+
+ # cp /var/mayor/www/policy/private/portal/portal/portal_demo.classic.php /var/mayor/www/policy/private/portal/portal/portal_sajat.classic.php
+ # cp /var/mayor/www/policy/private/portal/portal/portal_demo.pda.php /var/mayor/www/policy/private/portal/portal/portal_sajat.pda.php
+ # cp /var/mayor/www/policy/parent/portal/portal/portal_demo.classic.php /var/mayor/www/policy/parent/portal/portal/portal_sajat.classic.php
+ # cp /var/mayor/www/policy/parent/portal/portal/portal_demo.pda.php /var/mayor/www/policy/parent/portal/portal/portal_sajat.pda.php
+ # cp /var/mayor/www/policy/public/portal/portal/portal_demo.classic.php /var/mayor/www/policy/public/portal/portal/portal_sajat.classic.php
+ # cp /var/mayor/www/policy/public/portal/portal/portal_demo.pda.php /var/mayor/www/policy/public/portal/portal/portal_sajat.pda.php
+
+ * Majd szerkesszük ezeket az oldalakat saját elképzelésünk szerint.
+
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/session/createaccount.txt b/mayor-orig/mayor-wiki/wiki/data/pages/session/createaccount.txt
new file mode 100644
index 00000000..856e7dc2
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/session/createaccount.txt
@@ -0,0 +1,13 @@
+====== Új felhasználói azonosító létrehozása ======
+
+Új azonosító készítése egyszerű, magától értetődő feladat. Töltsük ki az ürlapot értelemszerűen: név, azonosító, jelszó, a jelszó mégegyszer, kategória, oktatási azonosító (ha van), E-mail cím, telefonszám (nem kötelező).
+
+A program ellenőrzi, hogy ütközik-e a megadott felhasználói azonosító valamely már felvettel.
+
+===== Adatállományból =====
+
+Ha több azonosítót akarunk felvenni, akkor tabulátorokkal tagolt szöveges állományba is írhatjuk az adatokat. A fájlnak ne legyen fejléce, egy sorba egy azonosító adatai kerüljenek és a jelszót ebben az esetben csak egyszer kell megadni:
+
+ Gipsz Jakab gipszj titok diák 74864826801 gipsz@mail.com 123-4567
+
+Az adatállományt a helyi gépről tölthetjük fel. A állománynak UTF-8 kódolásúnak kell lennie!
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/session/groupinfo.txt b/mayor-orig/mayor-wiki/wiki/data/pages/session/groupinfo.txt
new file mode 100644
index 00000000..3b916722
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/session/groupinfo.txt
@@ -0,0 +1,6 @@
+====== Felhasználói csoportok kezelése ======
+
+Ezen az oldalon egy adott csoportba tudunk új felhasználókat felvenni, illetve eltávolítani.
+
+ * Felvenni az "Új" rovatban lévő legördülő listából választva tudunk. (Figyelem! Itt tanárok és diákok vegyesen jelennek meg!)
+ * Törléskor a csoporttagok listájában jelöljük ki az illetőt, majd kattintsunk az OK gombra! \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/sidebar.txt b/mayor-orig/mayor-wiki/wiki/data/pages/sidebar.txt
new file mode 100644
index 00000000..caedf17e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/sidebar.txt
@@ -0,0 +1 @@
+[[http://www.mayor.hu]] \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/data/pages/start.txt b/mayor-orig/mayor-wiki/wiki/data/pages/start.txt
new file mode 100644
index 00000000..6471d1e8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/data/pages/start.txt
@@ -0,0 +1,7 @@
+====== MaYoR Wiki ======
+
+===== Mi a MaYoR =====
+
+A közösség erejével fejlesztett és karbantartott MaYoR elektornikus napló szoftver a mindannepi adminisztrációs feladatok hatékony szervezésére, terhének elosztására és a bonyolult központi szabályrendszerek egyszerű betartására terveztük, figyelembe véve az iskolák szereplőinek (diákok, tanárok, vezetés és szülők) együttes igényeit és a helyi/egyedi szokásoknak megfelelhető konfigurálhatóságot is.
+
+Részletekért olvassa a wiki-t vagy keressen minket a http://www.mayor.hu oldalon.
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/COPYING b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/COPYING
new file mode 100644
index 00000000..d60c31a9
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/README b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/README
new file mode 100644
index 00000000..5ef21c3a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/README
@@ -0,0 +1,10 @@
+====== BBCode Plugin for DokuWiki ======
+
+All documentation for the BBCode Plugin is available online at:
+
+ * http://wiki.splitbrain.org/plugin:bbcode
+
+(c) 2005 - 2007 by Esther Brunner <wikidesign@gmail.com>
+(c) 2008 - 2010 by Gina Häußge, Michael Klier <dokuwiki@chimeric.de>
+
+See COPYING for license info.
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/plugin.info.txt b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/plugin.info.txt
new file mode 100644
index 00000000..58ad58cf
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/plugin.info.txt
@@ -0,0 +1,7 @@
+base bbcode
+author Michael Klier, Gina Häussge
+email dokuwiki@chimeric.de
+date 2010-06-04
+name BBCode Plugin
+desc BBCode implementation for DokuWiki
+url http://dokuwiki.org/plugin:bbcode
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/bold.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/bold.php
new file mode 100644
index 00000000..dae1d964
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/bold.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_bold extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'formatting'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[b\](?=.*?\x5B/b\x5D)',$mode,'strong'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/b\]','strong'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/code.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/code.php
new file mode 100644
index 00000000..c495fdd0
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/code.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_code extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'protected'; }
+ function getPType() { return 'block'; }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[code\](?=.*?\x5B/code\x5D)',$mode,'preformatted'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/code\]','preformatted'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ return true;
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/color.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/color.php
new file mode 100644
index 00000000..f229eeae
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/color.php
@@ -0,0 +1,236 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ * @author Luis Machuca Bezzaza <luis.machuca@gulix.cl>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_color extends DokuWiki_Syntax_Plugin {
+
+ static $browsercolors = array (
+ 'aliceblue' => '#f0f8ff' ,
+ 'antiquewhite' => '#faebd7' ,
+ 'aqua' => '#00ffff' ,
+ 'aquamarine' => '#7fffd4' ,
+ 'azure' => '#f0ffff' ,
+ 'beige' => '#f5f5dc' ,
+ 'bisque' => '#ffe4c4' ,
+ 'black' => '#000000' ,
+ 'blanchedalmond' => '#ffebcd' ,
+ 'blue' => '#0000ff' ,
+ 'blueviolet' => '#8a2be2' ,
+ 'brown' => '#a52a2a' ,
+ 'burlywood' => '#deb887' ,
+ 'cadetblue' => '#5f9ea0' ,
+ 'chartreuse' => '#7fff00' ,
+ 'chocolate' => '#d2691e' ,
+ 'coral' => '#ff7f50' ,
+ 'cornflowerblue' => '#6495ed' ,
+ 'cornsilk' => '#fff8dc' ,
+ 'crimson' => '#dc143c' ,
+ 'cyan' => '#00ffff' ,
+ 'darkblue' => '#00008b' ,
+ 'darkcyan' => '#008b8b' ,
+ 'darkgoldenrod' => '#b8860b' ,
+ 'darkgray' => '#a9a9a9' ,
+ 'darkgreen' => '#006400' ,
+ 'darkkhaki' => '#bdb76b' ,
+ 'darkmagenta' => '#8b008b' ,
+ 'darkolivegreen' => '#556b2f' ,
+ 'darkorange' => '#ff8c00' ,
+ 'darkorchid' => '#9932cc' ,
+ 'darkred' => '#8b0000' ,
+ 'darksalmon' => '#e9967a' ,
+ 'darkseagreen' => '#8fbc8f' ,
+ 'darkslateblue' => '#483d8b' ,
+ 'darkslategray' => '#2f4f4f' ,
+ 'darkturquoise' => '#00ced1' ,
+ 'darkviolet' => '#9400d3' ,
+ 'deeppink' => '#ff1493' ,
+ 'deepskyblue' => '#00bfff' ,
+ 'dimgray' => '#696969' ,
+ 'dodgerblue' => '#1e90ff' ,
+ 'firebrick' => '#b22222' ,
+ 'floralwhite' => '#fffaf0' ,
+ 'forestgreen' => '#228b22' ,
+ 'fuchsia' => '#ff00ff' ,
+ 'gainsboro' => '#dcdcdc' ,
+ 'ghostwhite' => '#f8f8ff' ,
+ 'gold' => '#ffd700' ,
+ 'goldenrod' => '#daa520' ,
+ 'gray' => '#808080' ,
+ 'green' => '#008000' ,
+ 'greenyellow' => '#adff2f' ,
+ 'honeydew' => '#f0fff0' ,
+ 'hotpink' => '#ff69b4' ,
+ 'indianred' => '#cd5c5c' ,
+ 'indigo' => '#4b0082' ,
+ 'ivory' => '#fffff0' ,
+ 'khaki' => '#f0e68c' ,
+ 'lavender' => '#e6e6fa' ,
+ 'lavenderblush' => '#fff0f5' ,
+ 'lawngreen' => '#7cfc00' ,
+ 'lemonchiffon' => '#fffacd' ,
+ 'lightblue' => '#add8e6' ,
+ 'lightcoral' => '#f08080' ,
+ 'lightcyan' => '#e0ffff' ,
+ 'lightgoldenrodyellow' => '#fafad2' ,
+ 'lightgrey' => '#d3d3d3' ,
+ 'lightgreen' => '#90ee90' ,
+ 'lightpink' => '#ffb6c1' ,
+ 'lightsalmon' => '#ffa07a' ,
+ 'lightseagreen' => '#20b2aa' ,
+ 'lightskyblue' => '#87cefa' ,
+ 'lightslategray' => '#778899' ,
+ 'lightsteelblue' => '#b0c4de' ,
+ 'lightyellow' => '#ffffe0' ,
+ 'lime' => '#00ff00' ,
+ 'limegreen' => '#32cd32' ,
+ 'linen' => '#faf0e6' ,
+ 'magenta' => '#ff00ff' ,
+ 'maroon' => '#800000' ,
+ 'mediumaquamarine' => '#66cdaa' ,
+ 'mediumblue' => '#0000cd' ,
+ 'mediumorchid' => '#ba55d3' ,
+ 'mediumpurple' => '#9370d8' ,
+ 'mediumseagreen' => '#3cb371' ,
+ 'mediumslateblue' => '#7b68ee' ,
+ 'mediumspringgreen' => '#00fa9a' ,
+ 'mediumturquoise' => '#48d1cc' ,
+ 'mediumvioletred' => '#c71585' ,
+ 'midnightblue' => '#191970' ,
+ 'mintcream' => '#f5fffa' ,
+ 'mistyrose' => '#ffe4e1' ,
+ 'moccasin' => '#ffe4b5' ,
+ 'navajowhite' => '#ffdead' ,
+ 'navy' => '#000080' ,
+ 'oldlace' => '#fdf5e6' ,
+ 'olive' => '#808000' ,
+ 'olivedrab' => '#6b8e23' ,
+ 'orange' => '#ffa500' ,
+ 'orangered' => '#ff4500' ,
+ 'orchid' => '#da70d6' ,
+ 'palegoldenrod' => '#eee8aa' ,
+ 'palegreen' => '#98fb98' ,
+ 'paleturquoise' => '#afeeee' ,
+ 'palevioletred' => '#d87093' ,
+ 'papayawhip' => '#ffefd5' ,
+ 'peachpuff' => '#ffdab9' ,
+ 'peru' => '#cd853f' ,
+ 'pink' => '#ffc0cb' ,
+ 'plum' => '#dda0dd' ,
+ 'powderblue' => '#b0e0e6' ,
+ 'purple' => '#800080' ,
+ 'red' => '#ff0000' ,
+ 'rosybrown' => '#bc8f8f' ,
+ 'royalblue' => '#4169e1' ,
+ 'saddlebrown' => '#8b4513' ,
+ 'salmon' => '#fa8072' ,
+ 'sandybrown' => '#f4a460' ,
+ 'seagreen' => '#2e8b57' ,
+ 'seashell' => '#fff5ee' ,
+ 'sienna' => '#a0522d' ,
+ 'silver' => '#c0c0c0' ,
+ 'skyblue' => '#87ceeb' ,
+ 'slateblue' => '#6a5acd' ,
+ 'slategray' => '#708090' ,
+ 'snow' => '#fffafa' ,
+ 'springgreen' => '#00ff7f' ,
+ 'steelblue' => '#4682b4' ,
+ 'tan' => '#d2b48c' ,
+ 'teal' => '#008080' ,
+ 'thistle' => '#d8bfd8' ,
+ 'tomato' => '#ff6347' ,
+ 'turquoise' => '#40e0d0' ,
+ 'violet' => '#ee82ee' ,
+ 'wheat' => '#f5deb3' ,
+ 'white' => '#ffffff' ,
+ 'whitesmoke' => '#f5f5f5' ,
+ 'yellow' => '#ffff00' ,
+ 'yellowgreen' => '#9acd32' ,
+ );
+
+ function getType() { return 'formatting'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[color=.*?\](?=.*?\x5B/color\x5D)',$mode,'plugin_bbcode_color'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/color\]','plugin_bbcode_color'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ $match = substr($match, 7, -1);
+ if (preg_match('/".+?"/',$match)) $match = substr($match, 1, -1); // addition #1: unquote
+ return array($state, $match);
+
+ case DOKU_LEXER_UNMATCHED :
+ return array($state, $match);
+
+ case DOKU_LEXER_EXIT :
+ return array($state, '');
+
+ }
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ if($mode == 'xhtml') {
+ list($state, $match) = $data;
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ if ($match = $this->_isValid($match)) {
+ $renderer->doc .= '<span style="color:'. $match. '">'; // addition #2: SVG browser colors
+ } else {
+ $renderer->doc .= '<span>';
+ }
+ break;
+
+ case DOKU_LEXER_UNMATCHED :
+ $renderer->doc .= $renderer->_xmlEntities($match);
+ break;
+
+ case DOKU_LEXER_EXIT :
+ $renderer->doc .= '</span>';
+ break;
+
+ }
+ return true;
+ }
+ return false;
+ }
+
+ // validate color value $c
+ // this is cut price validation - only to ensure the basic format is correct and there is nothing harmful
+ // three basic formats "colorname", "#fff[fff]", "rgb(255[%],255[%],255[%])"
+ function _isValid($c) {
+ $c = trim($c);
+
+ $pattern = "/
+ ([a-zA-z]+)| #colorname - not verified
+ (\#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}))| #colorvalue
+ (rgb\(([0-9]{1,3}%?,){2}[0-9]{1,3}%?\)) #rgb triplet
+ /x";
+
+ if (preg_match($pattern, $c)) return $c;
+ if (!empty($this->browsercolors[$c])) return $this->browsercolors[$c];
+ return "";
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/deleted.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/deleted.php
new file mode 100644
index 00000000..69f84ac9
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/deleted.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_deleted extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'formatting'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[s\](?=.*?\x5B/s\x5D)',$mode,'deleted'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/s\]','deleted'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/email.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/email.php
new file mode 100644
index 00000000..dd87d386
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/email.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_email extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'substition'; }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addSpecialPattern('\[email.+?\[/email\]',$mode,'plugin_bbcode_email'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ $match = trim(substr($match, 7, -8));
+ $match = preg_split('/\]/u',$match,2);
+ if ( !isset($match[0]) ) {
+ $url = $match[1];
+ $title = NULL;
+ } else {
+ $url = $match[0];
+ $title = $match[1];
+ }
+ $handler->_addCall('emaillink',array($url, $title), $pos);
+ return true;
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/image.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/image.php
new file mode 100644
index 00000000..8b0d782e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/image.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_image extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'substition'; }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addSpecialPattern('\[img.+?\[/img\]',$mode,'plugin_bbcode_image'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ $match = trim(substr($match, 5, -6));
+ $match = preg_split('/\]/u',$match,2);
+ if ( !isset($match[0]) ) {
+ $url = $match[1];
+ $title = NULL;
+ } else {
+ $url = $match[0];
+ $title = $match[1];
+ }
+
+ // Check whether this is a local or remote image
+ if ( preg_match('#^(https?|ftp)#i',$url) ) {
+ $call = 'externalmedia';
+ } else {
+ $call = 'internalmedia';
+ }
+
+ $handler->_addCall($call,array($url,$title,NULL,NULL,NULL,'cache'),$pos);
+ return true;
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/italic.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/italic.php
new file mode 100644
index 00000000..de94cfad
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/italic.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_italic extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'formatting'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[i\](?=.*?\x5B/i\x5D)',$mode,'emphasis'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/i\]','emphasis'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/link.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/link.php
new file mode 100644
index 00000000..e752dbd1
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/link.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_link extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'substition'; }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addSpecialPattern('\[url.+?\[/url\]',$mode,'plugin_bbcode_link'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ $match = substr($match, 5, -6);
+ if (preg_match('/".+?"/',$match)) $match = substr($match, 1, -1); // addition #1: unquote
+ $match = preg_split('/\]/u',$match,2);
+ if ( !isset($match[0]) ) {
+ $url = $match[1];
+ $title = NULL;
+ } else {
+ $url = $match[0];
+ $title = $match[1];
+ }
+
+ // external link (accepts all protocols)
+ if ( preg_match('#^([a-z0-9\-\.+]+?)://#i',$url) ) {
+ $handler->_addCall('externallink',array($url,$title),$pos);
+
+ // local link
+ } elseif ( preg_match('!^#.+!',$url) ) {
+ $handler->_addCall('locallink',array(substr($url,1),$title),$pos);
+
+ // internal link
+ } else {
+ $handler->_addCall('internallink',array($url,$title),$pos);
+ }
+ return true;
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/monospace.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/monospace.php
new file mode 100644
index 00000000..dcaa931f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/monospace.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_monospace extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'formatting'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[m\](?=.*?\x5B/m\x5D)',$mode,'monospace'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/m\]','monospace'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/olist.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/olist.php
new file mode 100644
index 00000000..a4362db6
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/olist.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_olist extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'container'; }
+ function getPType() { return 'block'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled', 'protected'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[list=.*?\]\s*?\[\*\](?=.*?\x5B/list\x5D)', $mode, 'plugin_bbcode_olist'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/list\]', 'plugin_bbcode_olist'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ // get the list type
+ $match = substr($match, 6, -4);
+ $match = preg_split('/\]/u',$match,2);
+ return array($state, $match[0]);
+
+ case DOKU_LEXER_UNMATCHED :
+ return array($state, $match);
+
+ case DOKU_LEXER_EXIT :
+ return array($state, '');
+
+ }
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ if($mode == 'xhtml') {
+ list($state, $match) = $data;
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ switch ($match) {
+ case 'i':
+ $type = 'lower-roman';
+ break;
+ case 'I':
+ $type = 'upper-roman';
+ break;
+ case 'a':
+ $type = 'lower-alpha';
+ break;
+ case 'A':
+ $type = 'upper-alpha';
+ break;
+ default:
+ $type = 'decimal';
+ }
+ $renderer->doc .= '<ol style="list-style-type:'.$type.'"><li class="level1"><div class="li">';
+ break;
+
+ case DOKU_LEXER_UNMATCHED :
+ $match = $renderer->_xmlEntities($match);
+ $renderer->doc .= str_replace('[*]', '</div></li><li class="level1"><div class="li">', $match);
+ break;
+
+ case DOKU_LEXER_EXIT :
+ $renderer->doc .= '</div></li></ol>';
+ break;
+
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/quote.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/quote.php
new file mode 100644
index 00000000..866f7360
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/quote.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_quote extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'container'; }
+ function getPType() { return 'block'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled', 'protected'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[quote.*?\](?=.*?\x5B/quote\x5D)',$mode,'plugin_bbcode_quote'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/quote\]','plugin_bbcode_quote'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ $match = explode('"',substr($match, 6, -1));
+ return array($state, $match[1]);
+
+ case DOKU_LEXER_UNMATCHED :
+ return array($state, $match);
+
+ case DOKU_LEXER_EXIT :
+ return array($state, '');
+
+ }
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ if($mode == 'xhtml') {
+ list($state, $match) = $data;
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ if ($match !== '') $renderer->doc .= '<p><sub>'.$match.':</sub></p>';
+ $renderer->doc .= '<blockquote>';
+ break;
+
+ case DOKU_LEXER_UNMATCHED :
+ $match = $renderer->_xmlEntities($match);
+ $renderer->doc .= str_replace("\n",'<br />',$match);
+ break;
+
+ case DOKU_LEXER_EXIT :
+ $renderer->doc .= '</blockquote>';
+ break;
+
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/size.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/size.php
new file mode 100644
index 00000000..f111a98d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/size.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ * @author Luis Machuca Bezzaza <luis.machuca@gulix.cl>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_size extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'formatting'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[size=.*?\](?=.*?\x5B/size\x5D)',$mode,'plugin_bbcode_size'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/size\]','plugin_bbcode_size'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler) {
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ $match = substr($match, 6, -1);
+ if (preg_match('/".+?"/',$match)) $match = substr($match, 1, -1); // addition #1: unquote
+ if (preg_match('/^[0-6]$/',$match)) $match = self::_relsz(intval($match) ); // addition #2: relative size number
+ else if (preg_match('/^\d+$/',$match)) $match .= 'px';
+ return array($state, $match);
+
+ case DOKU_LEXER_UNMATCHED :
+ return array($state, $match);
+
+ case DOKU_LEXER_EXIT :
+ return array($state, '');
+
+ }
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ if($mode == 'xhtml') {
+ list($state, $match) = $data;
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ $renderer->doc .= '<span style="font-size:'.$renderer->_xmlEntities($match).'">';
+ break;
+
+ case DOKU_LEXER_UNMATCHED :
+ $renderer->doc .= $renderer->_xmlEntities($match);
+ break;
+
+ case DOKU_LEXER_EXIT :
+ $renderer->doc .= '</span>';
+ break;
+
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * @fn _relsz
+ * @brief Returns a relative-size CSS keyword based on numbering.
+ * @author Luis Machuca Bezzaza <luis.machuca@gulix.cl>
+ *
+ * Provides a mapping to the series of size-related keywords in CSS 2.1
+ * (http://www.w3.org/TR/REC-CSS1/#font-size)
+ * Valid values are [0-6], with 3 for "medium" (as recommended by standard)
+ */
+ private function _relsz ($value) {
+ switch ($value) {
+ case 0:
+ return 'xx-small'; break;
+ case 1:
+ return 'x-small'; break;
+ case 2:
+ return 'small'; break;
+ case 4:
+ return 'large'; break;
+ case 5:
+ return 'x-large'; break;
+ case 6:
+ return 'xx-large'; break;
+ case 3:
+ return 'medium'; break;
+ default:
+ return false; break;
+ }
+ }
+
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/ulist.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/ulist.php
new file mode 100644
index 00000000..beeffb10
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/ulist.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_ulist extends DokuWiki_Syntax_Plugin {
+
+ function getType() { return 'container'; }
+ function getPType() { return 'block'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled', 'protected'); }
+ function getSort() { return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[list\]\s*?\[\*\](?=.*?\x5B/list\x5D)', $mode, 'plugin_bbcode_ulist'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/list\]', 'plugin_bbcode_ulist'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler){
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ return array($state, '');
+
+ case DOKU_LEXER_UNMATCHED :
+ return array($state, $match);
+
+ case DOKU_LEXER_EXIT :
+ return array($state, '');
+
+ }
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ if($mode == 'xhtml'){
+ list($state, $match) = $data;
+ switch ($state) {
+ case DOKU_LEXER_ENTER :
+ $renderer->doc .= '<ul><li class="level1"><div class="li">';
+ break;
+
+ case DOKU_LEXER_UNMATCHED :
+ $match = $renderer->_xmlEntities($match);
+ $renderer->doc .= str_replace('[*]', '</div></li><li class="level1"><div class="li">', $match);
+ break;
+
+ case DOKU_LEXER_EXIT :
+ $renderer->doc .= '</div></li></ul>';
+ break;
+
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :
diff --git a/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/underline.php b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/underline.php
new file mode 100644
index 00000000..ec34d5fd
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/plugins/bbcode/syntax/underline.php
@@ -0,0 +1,39 @@
+<?php
+/**
+ * BBCode plugin: allows BBCode markup familiar from forum software
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Esther Brunner <esther@kaffeehaus.ch>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_bbcode_underline extends DokuWiki_Syntax_Plugin {
+
+ function getType(){ return 'formatting'; }
+ function getAllowedTypes() { return array('formatting', 'substition', 'disabled'); }
+ function getSort(){ return 105; }
+ function connectTo($mode) { $this->Lexer->addEntryPattern('\[u\](?=.*?\x5B/u\x5D)',$mode,'underline'); }
+ function postConnect() { $this->Lexer->addExitPattern('\[/u\]','underline'); }
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler){
+ return array();
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ return true;
+ }
+}
+// vim:ts=4:sw=4:et:enc=utf-8:
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/VERSION.txt b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/VERSION.txt
new file mode 100644
index 00000000..a7bae7f1
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/VERSION.txt
@@ -0,0 +1 @@
+20070323 \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/default.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/default.php
new file mode 100644
index 00000000..2e5bb309
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/default.php
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Default configuration for the battlehorse template
+ *
+ * @author: Riccardo "battlehorse" Govoni <battlehorse@gmail.com>
+ */
+
+$conf['btl_sidebar_position'] = 'left' ;
+$conf['btl_sidebar_name'] = 'sidebar' ;
+$conf['btl_action_palette'] = 0;
+$conf['btl_default_page_actions_status'] = 'open';
+$conf['btl_default_wiki_actions_status'] = 'closed';
+$conf['btl_default_user_actions_status'] = 'closed';
+$conf['btl_default_submit_actions_status'] = 'closed' ;
+$conf['btl_language'] = 'en';
+
+?>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/metadata.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/metadata.php
new file mode 100644
index 00000000..1f87369c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/conf/metadata.php
@@ -0,0 +1,17 @@
+<?php
+/**
+ * configuration-manager metadata for the battlehorse template
+ *
+ * @author: Riccardo "battlehorse" Govoni <battlehorse@gmail.com>
+ */
+
+$meta['btl_sidebar_position'] = array('multichoice', '_choices' => array('left','right'));
+$meta['btl_sidebar_name'] = array('string', '_pattern' => '#^[a-z]*#' ) ;
+$meta['btl_action_palette'] = array('onoff');
+$meta['btl_default_user_actions_status'] = array('multichoice','_choices' => array('open','closed'));
+$meta['btl_default_page_actions_status'] = array('multichoice','_choices' => array('open','closed'));
+$meta['btl_default_wiki_actions_status'] = array('multichoice','_choices' => array('open','closed'));
+$meta['btl_default_submit_actions_status'] = array('multichoice','_choices' => array('open','closed'));
+$meta['btl_language'] = array('multichoice', '_choices' => array('en','hu','it'));
+
+?>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/design.css b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/design.css
new file mode 100644
index 00000000..3d28c913
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/design.css
@@ -0,0 +1,1029 @@
+/**
+ * Design elements for default Template
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Anika Henke <henke@cosmocode.de>
+ * @author Riccardo Govoni <battlehorse@gmail.com>
+ */
+
+/* -------------- general elements --------------- */
+
+* { padding: 0; margin: 0; }
+
+body {
+ font: 80% "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
+ background-color: __rg_background__ ;
+ color: __text__;
+ background-image: url(__rg_background_gradient__);
+ background-repeat: repeat-x;
+ background-position: 0% 0%;
+}
+
+div.dokuwiki {
+ width: 92% ;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+div.dokuwiki table {
+ font-size: 100%;
+}
+
+div.dokuwiki tr,
+div.dokuwiki td,
+div.dokuwiki th {
+}
+
+div.dokuwiki img {
+ border: 0;
+}
+
+div.dokuwiki p,
+div.dokuwiki blockquote,
+div.dokuwiki table,
+div.dokuwiki pre {
+ margin: 0 0 1.0em 0;
+}
+
+div.dokuwiki hr {
+ border: 0px;
+ border-top: 1px solid __border__;
+ text-align: center;
+ height: 0px;
+}
+
+div.dokuwiki div.nothing {
+ text-align: center;
+ margin: 2em;
+}
+
+/* ---------------- shadows under the main content ------------------------ */
+
+div.dokuwiki .page_lower_dark {
+ background-color: __rg_bread_lower_dark__ ;
+ height: 1px;
+ overflow: hidden;
+ clear: right;
+}
+
+div.dokuwiki .page_lower_medium {
+ background-color: __rg_bread_lower_medium__ ;
+ height: 1px;
+ overflow: hidden;
+}
+
+div.dokuwiki .page_lower_light {
+ background-color: __rg_bread_lower_light__ ;
+ height: 1px;
+ overflow: hidden;
+}
+
+/* ---------------- action links ------------------------ */
+
+div.smallpadding {
+ margin: 5px 0px 5px 2px ;
+}
+
+a.recent {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_recent_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.index {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_index_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.edit {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_edit_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.create {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_create_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.revisions {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_revision_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.backlink {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_backlink_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.login, a.logout {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_login_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.subscribe {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_subscribe_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.unsubscribe {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_unsubscribe_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.profile {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_profile_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.admin {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_admin_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.show, a.source {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_show_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.previous {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_previous_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.top {
+ padding: 10px 24px 10px 1px;
+ background: transparent url(__rg_top_action__) no-repeat;
+ background-position: center right;
+ font-variant:small-caps;
+}
+
+a.digg {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_digg_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.delicious {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_delicious_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+a.googlebookmark {
+ padding: 10px 1px 10px 24px ;
+ background: transparent url(__rg_google_action__) no-repeat;
+ background-position: center left;
+ font-variant:small-caps;
+}
+
+/* ---------------- alignments ------------------------ */
+
+div.dokuwiki .leftalign { text-align: left; }
+
+div.dokuwiki .centeralign { text-align: center; }
+
+div.dokuwiki .rightalign { text-align: right; }
+
+/* ---------------- forms ------------------------ */
+
+div.dokuwiki form {
+ border: none;
+ display: inline;
+}
+
+div.dokuwiki label.block {
+ display: block;
+ text-align: right;
+ font-weight: bold;
+}
+
+div.dokuwiki label.simple {
+ display: block;
+ text-align: left;
+ font-weight: normal;
+}
+
+div.dokuwiki label.block input.edit {
+ width: 50%;
+}
+
+input.edit {
+ width: 40%;
+}
+
+div.dokuwiki fieldset {
+ width: 300px;
+ text-align: center;
+ border: 1px solid __border__;
+ padding: 0.5em;
+ margin: auto;
+}
+
+div.dokuwiki textarea.edit {
+ font-family: 14pt monospace;
+ color: __text__;
+ background-color: __background__;
+ border: 1px solid __border__;
+ padding: 0.3em 0 0 0.3em;
+ width: 100%;
+}
+
+/* nice alphatransparency background except for IE <7 */
+html>body div.dokuwiki textarea.edit {
+ background: __background__ url(images/inputshadow.png) repeat-x top;
+}
+
+div.dokuwiki input.edit,
+div.dokuwiki select.edit {
+ font-size: 100%;
+ border: 1px solid __border__;
+ color: __text__;
+ background-color: __background__;
+ vertical-align: middle;
+ margin: 1px;
+ padding: 0.20em 0.3em;
+ display: inline;
+}
+
+/* nice alphatransparency background except for IE <7 */
+html>body div.dokuwiki input.edit,
+html>body div.dokuwiki select.edit {
+ background: __background__ url(images/inputshadow.png) repeat-x top;
+}
+
+div.dokuwiki select.edit {
+ padding: 0.1em 0;
+}
+
+div.dokuwiki input.missing {
+ font-size: 100%;
+ border: 1px solid __border__;
+ color: __text__;
+ background-color: #ffcccc;
+ vertical-align: middle;
+ margin: 1px;
+ padding: 0.20em 0.3em;
+ display: inline;
+}
+
+/* edit form */
+div.dokuwiki div.toolbar,
+div.dokuwiki div#wiki__editbar {
+ margin: 2px 0;
+ text-align: left;
+}
+div.dokuwiki div#size__ctl {
+ float: right;
+ width: 60px;
+ height: 2.7em;
+}
+div.dokuwiki #size__ctl img {
+ cursor: pointer;
+}
+div.dokuwiki div#wiki__editbar div.editButtons {
+ float: left;
+ padding: 0 1.0em 0.7em 0;
+}
+div.dokuwiki div#wiki__editbar div.summary {
+ float: left;
+}
+div.dokuwiki .nowrap {
+ white-space: nowrap;
+}
+div.dokuwiki div#draft__status {
+ float: right;
+ color: __text_alt__;
+}
+
+/* --------- buttons ------------------- */
+
+
+div.dokuwiki input.button,
+div.dokuwiki button.button {
+ border: 1px solid __border__;
+ color: __text__;
+ background-color: __rg_button_background__;
+ vertical-align: middle;
+ text-decoration: none;
+ font-size: 100%;
+ cursor: pointer;
+ margin: 1px;
+ padding: 0.125em 0.4em;
+}
+
+/* nice alphatransparency background except for IE <7 */
+html>body div.dokuwiki input.button,
+html>body div.dokuwiki button.button {
+ background: __rg_button_background__ url(images/buttonshadow.png) repeat-x bottom;
+}
+
+div.dokuwiki input.button:hover, button.button:hover {
+ border: 1px solid __border__;
+ background-color: __rg_button_prelight__;
+}
+
+* html div.dokuwiki input.button,
+* html div.dokuwiki button.button {
+ height: 1.8em;
+}
+
+div.dokuwiki div.secedit input.button {
+ border: 1px solid __border__;
+ color: __text__;
+ background-color: __rg_button_background__;
+ vertical-align: middle;
+ text-decoration: none;
+ margin: 0;
+ padding: 0;
+ font-size: 10px;
+ cursor: pointer;
+ float: right;
+ display: inline;
+}
+
+div.dokuwiki div.secedit input.button:hover {
+ border: 1px solid __border__;
+ background-color: __rg_button_prelight__;
+}
+
+/* ----------- page navigator ------------- */
+
+div.dokuwiki div.pagenav {
+ margin: 1em 0 0 0;
+}
+
+div.dokuwiki div.pagenav-prev {
+ text-align: right;
+ float: left;
+ width: 49%
+}
+
+div.dokuwiki div.pagenav-next {
+ text-align: left;
+ float: right;
+ width: 49%
+}
+
+/* --------------- Links ------------------ */
+
+div.dokuwiki a:link,
+div.dokuwiki a:visited {
+ color: __extern__;
+ text-decoration:underline;
+}
+div.dokuwiki a:hover,
+div.dokuwiki a:active {
+ color:__hover__;
+ text-decoration:underline;
+}
+
+div.dokuwiki h1 a,
+div.dokuwiki h2 a,
+div.dokuwiki h3 a,
+div.dokuwiki h4 a,
+div.dokuwiki h5 a,
+div.dokuwiki h1 a:hover,
+div.dokuwiki h2 a:hover,
+div.dokuwiki h3 a:hover,
+div.dokuwiki h4 a:hover,
+div.dokuwiki h5 a:hover {
+ color:__text__;
+ text-decoration:none;
+}
+
+/* external link */
+div.dokuwiki a.urlextern {
+ background: transparent url(images/link_icon.gif) 0px 1px no-repeat;
+ padding: 1px 0px 1px 16px;
+ color:__extern__;
+ text-decoration:underline;
+}
+div.dokuwiki a.urlextern:visited {
+ color: __visited__ ;
+}
+div.dokuwiki a.urlextern:hover {
+ color:__hover__ ;
+ text-decoration:underline;
+}
+
+/* windows share */
+div.dokuwiki a.windows {
+ background: transparent url(images/windows.gif) 0px 1px no-repeat;
+ padding: 1px 0px 1px 16px;
+ color:__extern__;
+ text-decoration:underline;
+}
+div.dokuwiki a.windows:visited {
+ color:__visited__ ;
+}
+div.dokuwiki a.windows:hover {
+ color:__hover__;
+ text-decoration:underline;
+}
+
+/* interwiki link (icon are set by dokuwiki) */
+div.dokuwiki a.interwiki {
+ color:__extern__;
+ text-decoration:underline;
+}
+div.dokuwiki a.interwiki:visited {
+ color:__visited__ ;
+}
+div.dokuwiki a.interwiki:hover {
+ color:__hover__ ;
+ text-decoration:underline;
+}
+
+/* link to some embedded media */
+div.dokuwiki a.media {
+ color:__extern__;
+ text-decoration:underline;
+}
+div.dokuwiki a.media:hover {
+ color:__hover__;
+ text-decoration:underline
+}
+
+/* email link */
+div.dokuwiki a.mail {
+ background: transparent url(images/mail_icon.gif) 0px 1px no-repeat;
+ padding: 1px 0px 1px 16px;
+ color:__extern__;
+ text-decoration:underline;
+}
+div.dokuwiki a.mail:hover {
+ color:__hover__ ;
+ text-decoration:underline;
+}
+
+/* existing wikipage */
+div.dokuwiki a.wikilink1:link { color:__existing__; text-decoration:underline }
+div.dokuwiki a.wikilink1:visited { color:__visited__; text-decoration:underline }
+div.dokuwiki a.wikilink1:hover { color:__hover__; text-decoration:underline }
+
+/* not existing wikipage */
+div.dokuwiki a.wikilink2:link { color:__missing__; text-decoration:underline }
+div.dokuwiki a.wikilink2:visited { color:__missing__; text-decoration:underline }
+div.dokuwiki a.wikilink2:hover { color:__missing__; text-decoration:underline }
+
+
+/* ------------- Page elements ----------------- */
+
+div.dokuwiki div.preview {
+ background-color: __background_neu__;
+ margin: 0 0 0 2em;
+ padding: 4px;
+ border: 1px dashed __text__;
+}
+
+/* ------------- Breadcrumbs ----------------- */
+
+div.dokuwiki div.breadcrumbs {
+ background-color: __background_neu__;
+ color: __text_neu__;
+ font-size: 80%;
+ padding: 0 0 0 4px;
+ vertical-align:middle;
+ border-style : solid;
+ border-width: 1px 1px 1px 1px;
+ border-color: __rg_bread_border__ ;
+ background-image: url(__rg_breadcrumbs_gradient__);
+ background-repeat: repeat-x;
+ height: 17px;
+}
+
+/* ------------- Breadcrumbs shadows ----------------- */
+
+div.dokuwiki div.bread_upper_dark {
+ background-color: __rg_bread_upper_dark__ ;
+ height: 1px;
+ overflow: hidden;
+}
+
+div.dokuwiki div.bread_lower_dark {
+ background-color: __rg_bread_lower_dark__ ;
+ height: 1px;
+ overflow: hidden;
+}
+
+div.dokuwiki div.bread_lower_medium {
+ background-color: __rg_bread_lower_medium__ ;
+ height: 1px;
+ overflow: hidden;
+}
+
+div.dokuwiki div.bread_lower_light {
+ background-color: __rg_bread_lower_light__ ;
+ height: 1px;
+ overflow: hidden;
+}
+
+
+div.dokuwiki span.user {
+ color: __text_other__;
+ font-size: 90%;
+}
+
+div.dokuwiki li.minor {
+ color: __text_neu__;
+ font-style: italic;
+}
+
+/* embedded images */
+div.dokuwiki img.media {
+ margin: 3px;
+}
+
+div.dokuwiki img.medialeft {
+ border: 0;
+ float: left;
+ margin: 0 1.5em 0 0;
+}
+
+div.dokuwiki img.mediaright {
+ border: 0;
+ float: right;
+ margin: 0 0 0 1.5em;
+}
+
+div.dokuwiki img.mediacenter {
+ border: 0;
+ display: block;
+ margin: 0 auto;
+}
+
+/* smileys */
+div.dokuwiki img.middle {
+ vertical-align: middle;
+}
+
+div.dokuwiki acronym {
+ cursor: help;
+ border-bottom: 1px dotted __text__;
+}
+
+/* general headline setup */
+div.dokuwiki h1,
+div.dokuwiki h2,
+div.dokuwiki h3,
+div.dokuwiki h4,
+div.dokuwiki h5 {
+ color: __text__;
+ background-color: transparent;
+ font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
+ font-size: 100%;
+ font-weight: normal;
+ margin: 0 0 1em 0;
+ padding: 0.5em 0 0 0;
+ border-bottom: 1px solid __border__;
+ clear: left;
+}
+
+/* special headlines */
+div.dokuwiki h1 {font-size: 160%; margin-left: 0px; font-weight: bold;}
+div.dokuwiki h2 {font-size: 150%; margin-left: 3px; border-bottom: 1px dotted __border__ }
+div.dokuwiki h3 {font-size: 140%; margin-left: 6px; border-bottom: 1px dotted __border__ ; font-weight: bold;}
+div.dokuwiki h4 {font-size: 120%; margin-left: 9px; border-bottom: none ; font-weight: bold;}
+div.dokuwiki h5 {font-size: 100%; margin-left: 12px; border-bottom: none ; font-weight: bold;}
+
+/* special headlines for sidebar */
+div.dokuwiki div.sidebar h1 { clear: none; font-size: 120%; text-transform: uppercase; letter-spacing: 0.2em; text-align: center; margin-bottom: 5px;}
+div.dokuwiki div.sidebar h2 { clear: none; font-size: 120%; text-transform: uppercase; letter-spacing: 0.2em; text-align: center; margin-bottom: 5px;}
+div.dokuwiki div.sidebar h3 { clear: none; margin-bottom: 2px;}
+div.dokuwiki div.sidebar h4 { clear: none; margin-bottom: 2px;}
+div.dokuwiki div.sidebar h5 { clear: none; margin-bottom: 2px;}
+
+/* indent different sections */
+div.dokuwiki div.level1 {margin-left: 3px;}
+div.dokuwiki div.level2 {margin-left: 6px;}
+div.dokuwiki div.level3 {margin-left: 9px;}
+div.dokuwiki div.level4 {margin-left: 12px;}
+div.dokuwiki div.level5 {margin-left: 15px;}
+
+/* unordered lists */
+div.dokuwiki ul {
+ line-height: 1.5em;
+ list-style-type: square;
+ list-style-image: none;
+ margin: 0 0 0.5em 1.5em;
+ color: __text_alt__;
+}
+
+/* ordered lists */
+div.dokuwiki ol {
+ line-height: 1.5em;
+ list-style-image: none;
+ margin: 0 0 0.5em 1.5em;
+ color: __text_alt__;
+ font-weight: bold;
+}
+
+/* the list items overriding the ul/ol definition */
+div.dokuwiki .li {
+ color: __text__;
+ font-weight: normal;
+}
+
+div.dokuwiki ol {list-style-type: decimal}
+div.dokuwiki ol ol {list-style-type: upper-roman}
+div.dokuwiki ol ol ol {list-style-type: lower-alpha}
+div.dokuwiki ol ol ol ol {list-style-type: lower-greek}
+
+div.dokuwiki li.open {
+ list-style-image: url(images/open.gif);
+ /*list-style-type: circle;*/
+}
+
+div.dokuwiki li.closed {
+ list-style-image: url(images/closed.gif);
+ /*list-style-type: disc;*/
+}
+
+div.dokuwiki blockquote {
+ border-left: 2px solid __border__;
+ padding-left: 3px;
+}
+
+div.dokuwiki pre {
+ font-size: 120%;
+ padding: 0.5em;
+ border: 1px dashed __rg_code_border__;
+ color: __text__;
+ overflow: auto;
+}
+
+/* code blocks by indention */
+div.dokuwiki pre.pre {
+ background-color: __rg_code__ ;
+}
+
+/* code blocks by code tag */
+div.dokuwiki pre.code {
+ background-color: __rg_code__ ;
+}
+
+/* inline code words */
+div.dokuwiki code {
+ font-size: 120%;
+}
+
+/* code blocks by file tag */
+div.dokuwiki pre.file {
+ font-size: 120%;
+ padding: 0.5em;
+ border: 1px dotted __rg_file_border__ ;
+ color: Black;
+ background-color: __rg_file__ ;
+ overflow: auto;
+}
+
+/* Highlights the current page in the index */
+.curid {
+ font-weight: bold;
+}
+
+/* inline tables */
+div.dokuwiki table.inline {
+ border-style: none;
+ background-color: __background__;
+/* border-spacing: 0px; */
+/* border-collapse: collapse; */
+}
+
+div.dokuwiki table.inline th {
+ padding: 3px;
+ border: 1px solid __border__;
+ background-color: __background_alt__;
+}
+
+div.dokuwiki table.inline td {
+ padding: 3px;
+ border: 1px solid __border__;
+}
+
+/* ---------- table of contents ------------------- */
+
+div.dokuwiki div.toc {
+ margin: 1.2em 0 0 2em;
+ float: right;
+ width: 200px;
+ font-size: 80%;
+ clear: both;
+}
+
+div.dokuwiki div.sidebar div.toc {
+ display: none;
+}
+
+div.dokuwiki div.tocheader {
+ border: 1px solid __border__;
+ background-color: __background_alt__;
+ text-align: left;
+ font-weight: bold;
+ padding: 3px;
+ margin-bottom: 2px;
+}
+
+div.dokuwiki div.tocheader img {
+ width: 0.8em;
+ height: 0.8em;
+ float: right;
+ margin: 0.3em 3px 0 0;
+ cursor: pointer;
+}
+
+div.dokuwiki #toc__inside {
+ border: 1px solid __border__;
+ background-color: __background__;
+ text-align: left;
+ padding: 0.5em 0 0.7em 0;
+}
+
+div.dokuwiki ul.toc {
+ list-style-type: none;
+ list-style-image: none;
+ line-height: 1.2em;
+ padding-left: 1em;
+ margin: 0;
+}
+
+div.dokuwiki ul.toc li {
+ background: transparent url(images/tocdot2.gif) 0 0.6em no-repeat;
+ padding-left: 0.4em;
+}
+
+div.dokuwiki ul.toc li.clear {
+ background-image: none;
+ padding-left: 0.4em;
+}
+
+div.dokuwiki a.toc:link,
+div.dokuwiki a.toc:visited {
+ color: __text__ ;
+ text-decoration:none;
+}
+
+div.dokuwiki a.toc:hover,
+div.dokuwiki a.toc:active {
+ color: __text__;
+ text-decoration:underline;
+}
+
+/* ---------------------------- Diff rendering --------------------------*/
+div.dokuwiki table.diff {
+ background-color: __background__;
+ width: 100%;
+}
+div.dokuwiki td.diff-blockheader {
+ font-weight: bold;
+}
+div.dokuwiki table.diff th {
+ border-bottom: 1px solid __border__;
+ font-size: 120%;
+ width: 50%;
+ font-weight: normal;
+ text-align: left;
+}
+div.dokuwiki table.diff td {
+ font-family: monospace;
+ font-size: 100%;
+}
+div.dokuwiki td.diff-addedline {
+ background-color: #ddffdd;
+}
+div.dokuwiki td.diff-deletedline {
+ background-color: #ffffbb;
+}
+div.dokuwiki td.diff-context {
+ background-color: __background_neu__;
+}
+div.dokuwiki span.diffchange {
+ color: red;
+}
+
+/* --------------------- footnotes -------------------------------- */
+
+div.dokuwiki div.footnotes {
+ clear: both;
+ border-top: 1px solid __border__;
+ padding-left: 1em;
+ margin-top: 1em;
+}
+
+div.dokuwiki div.fn {
+ font-size: 90%;
+}
+
+div.dokuwiki a.fn_top {
+ vertical-align: super;
+ font-size: 80%;
+}
+
+div.dokuwiki a.fn_bot {
+ vertical-align: super;
+ font-size: 80%;
+ font-weight: bold;
+}
+
+/* insitu-footnotes */
+div.insitu-footnote {
+ font-size: 80%;
+ line-height: 1.2em;
+ border: 1px solid __border__;
+ background-color: __background_other__;
+ text-align: left;
+ padding: 4px;
+ max-width: 40%; /* IE's width is handled in javascript */
+}
+
+/* overcome IE issue with one line code or file boxes which require h. scrolling */
+* html .insitu-footnote pre.code,
+* html .insitu-footnote pre.file {
+ padding-bottom: 18px;
+}
+
+/* --------------- search result formating --------------- */
+div.dokuwiki .search_result {
+ margin-bottom: 6px;
+ padding: 0 10px 0 30px;
+}
+
+div.dokuwiki .search_snippet {
+ color: __text_other__;
+ font-size: 12px;
+ margin-left: 20px;
+}
+
+div.dokuwiki .search_sep {
+ color: __text__;
+}
+
+div.dokuwiki .search_hit {
+ color: __text__;
+ background-color: __highlight__;
+}
+
+div.dokuwiki div.search_quickresult {
+ margin: 0 0 15px 30px;
+ padding: 0 10px 10px 0;
+ border-bottom: 1px dashed __border__;
+}
+div.dokuwiki div.search_quickresult h3 {
+ margin: 0 0 1.0em 0;
+ font-size: 1em;
+ font-weight: bold;
+}
+
+div.dokuwiki ul.search_quickhits {
+ margin: 0 0 0.5em 1.0em;
+}
+
+div.dokuwiki ul.search_quickhits li {
+ margin: 0 1.0em 0 1.0em;
+ float:left;
+ width: 30%;
+}
+
+/* ------------------ Additional ---------------------- */
+
+div.footerinc {
+ text-align: center;
+}
+.footerinc a img {
+ opacity: 0.5;
+ border: 0;
+}
+
+.footerinc a:hover img {
+ opacity: 1;
+}
+
+/* ---------- AJAX quicksearch ----------- */
+
+div.dokuwiki div.ajax_qsearch {
+ position: absolute;
+ right: 237px;;
+ width: 200px;
+ opacity: 0.9;
+ display: none;
+ font-size: 80%;
+ line-height: 1.2em;
+ border: 1px solid __border__;
+ background-color: __background_other__;
+ text-align: left;
+ padding: 4px;
+}
+
+/* --------- Toolbar -------------------- */
+button.toolbutton {
+ background-color: __background__;
+ padding: 0px;
+ margin: 0 1px 0 0;
+ border: 1px solid __border__;
+ cursor: pointer;
+}
+
+/* nice alphatransparency background except for IE <7 */
+html>body button.toolbutton {
+ background: __background__ url(images/buttonshadow.png) repeat-x bottom;
+}
+
+div.picker {
+ width: 250px;
+ border: 1px solid __border__;
+ background-color: __background_alt__;
+}
+
+button.pickerbutton {
+ padding: 0px;
+ margin: 0 1px 1px 0;
+ border: 0;
+ background-color: transparent;
+ font-size: 80%;
+ cursor: pointer;
+}
+
+/* ---------- Spellchecking ------------- */
+
+div.dokuwiki a.spell_error {
+ color: #f00;
+ text-decoration: underline;
+}
+
+div.dokuwiki div#spell__suggest {
+ background-color: __background__;
+ padding: 2px;
+ border: 1px solid __text__;
+ font-size: 80%;
+ display: none;
+}
+
+div.dokuwiki div#spell__result {
+ border: 1px solid __border__;
+ color: __text__;
+ font-size: 14px;
+ padding: 3px;
+ background-color: __background_other__;
+ display: none;
+}
+
+div.dokuwiki span.spell_noerr {
+ color: #093;
+}
+
+div.dokuwiki span.spell_wait {
+ color: #06c;
+}
+
+/* --------------- Image Details ----------------- */
+
+div.dokuwiki div.img_big {
+ float: left;
+ margin-right: 0.5em;
+}
+
+div.dokuwiki dl.img_tags dt {
+ font-weight: bold;
+ background-color: __background_alt__;
+}
+div.dokuwiki dl.img_tags dd {
+ background-color: __background_neu__;
+}
+
+div.dokuwiki div.imagemeta {
+ color: __text_neu__;
+ font-size: 70%;
+ line-height: 95%;
+}
+
+div.dokuwiki div.imagemeta img.thumb {
+ float:left;
+ margin-right: 0.1em;
+}
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/detail.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/detail.php
new file mode 100644
index 00000000..d62031fb
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/detail.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * DokuWiki Image Detail Template
+ *
+ * This is the template for displaying image details
+ *
+ * You should leave the doctype at the very top - It should
+ * always be the very first line of a document.
+ *
+ * @link http://wiki.splitbrain.org/wiki:tpl:templates
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+// must be run from within DokuWiki
+if (!defined('DOKU_INC')) die();
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang']?>" lang="<?php echo $conf['lang']?>" dir="ltr">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>
+ <?php echo hsc(tpl_img_getTag('IPTC.Headline',$IMG))?>
+ [<?php echo strip_tags($conf['title'])?>]
+ </title>
+
+ <?php tpl_metaheaders()?>
+
+ <link rel="shortcut icon" href="<?php echo DOKU_TPL?>images/favicon.ico" />
+</head>
+
+<body>
+<div class="dokuwiki">
+ <?php html_msgarea()?>
+
+ <div class="page">
+ <?php if($ERROR){ print $ERROR; }else{ ?>
+
+ <h1><?php echo hsc(tpl_img_getTag('IPTC.Headline',$IMG))?></h1>
+
+ <div class="img_big">
+ <?php tpl_img(900,700) ?>
+ </div>
+
+ <div class="img_detail">
+ <p class="img_caption">
+ <?php print nl2br(hsc(tpl_img_getTag(array('IPTC.Caption',
+ 'EXIF.UserComment',
+ 'EXIF.TIFFImageDescription',
+ 'EXIF.TIFFUserComment')))); ?>
+ </p>
+
+ <p>&larr; <?php echo $lang['img_backto']?> <?php tpl_pagelink($ID)?></p>
+
+ <dl class="img_tags">
+ <?php
+ $t = tpl_img_getTag('Date.EarliestTime');
+ if($t) print '<dt>'.$lang['img_date'].':</dt><dd>'.date($conf['dformat'],$t).'</dd>';
+
+ $t = tpl_img_getTag('File.Name');
+ if($t) print '<dt>'.$lang['img_fname'].':</dt><dd>'.hsc($t).'</dd>';
+
+ $t = tpl_img_getTag(array('Iptc.Byline','Exif.TIFFArtist','Exif.Artist','Iptc.Credit'));
+ if($t) print '<dt>'.$lang['img_artist'].':</dt><dd>'.hsc($t).'</dd>';
+
+ $t = tpl_img_getTag(array('Iptc.CopyrightNotice','Exif.TIFFCopyright','Exif.Copyright'));
+ if($t) print '<dt>'.$lang['img_copyr'].':</dt><dd>'.hsc($t).'</dd>';
+
+ $t = tpl_img_getTag('File.Format');
+ if($t) print '<dt>'.$lang['img_format'].':</dt><dd>'.hsc($t).'</dd>';
+
+ $t = tpl_img_getTag('File.NiceSize');
+ if($t) print '<dt>'.$lang['img_fsize'].':</dt><dd>'.hsc($t).'</dd>';
+
+ $t = tpl_img_getTag('Simple.Camera');
+ if($t) print '<dt>'.$lang['img_camera'].':</dt><dd>'.hsc($t).'</dd>';
+
+ $t = tpl_img_getTag(array('IPTC.Keywords','IPTC.Category'));
+ if($t) print '<dt>'.$lang['img_keywords'].':</dt><dd>'.hsc($t).'</dd>';
+
+ ?>
+ </dl>
+ <?php //Comment in for Debug// dbg(tpl_img_getTag('Simple.Raw'));?>
+ </div>
+
+ <?php } ?>
+ </div>
+</div>
+</body>
+</html>
+
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/footer.html b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/footer.html
new file mode 100644
index 00000000..f89194a6
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/footer.html
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Example footer include
+ *
+ * This file shows you how to use the include hooks. However I recommend to
+ * create your own complete new template instead.
+ */
+
+$tgt = ($conf['target']['extern']) ? 'target="'.$conf['target']['extern'].'"' : '';
+?>
+
+<div class="footerinc">
+
+ <a <?php echo $tgt?> href="http://www.spreadfirefox.com/?q=affiliates&amp;id=0&amp;t=82">
+ <img border="0" alt="Get Firefox!" title="Get Firefox!" src="http://sfx-images.mozilla.org/affiliates/Buttons/80x15/white_1.gif"/>
+ </a>
+
+ <a <?php echo $tgt?> href="<?php echo DOKU_BASE; ?>feed.php" title="Recent changes RSS feed"><img src="<?php echo DOKU_TPL; ?>images/button-rss.png" width="80" height="15" alt="Recent changes RSS feed" /></a>
+
+ <a <?php echo $tgt?> href="http://creativecommons.org/licenses/by-nc-sa/2.0/" rel="license" title="Creative Commons License"><img src="<?php echo DOKU_TPL; ?>images/button-cc.gif" width="80" height="15" alt="Creative Commons License" /></a>
+
+ <a <?php echo $tgt?> href="https://www.paypal.com/xclick/business=andi%40splitbrain.org&amp;item_name=DokuWiki+Donation&amp;no_shipping=1&amp;no_note=1&amp;tax=0&amp;currency_code=EUR&amp;lc=US" title="Donate"><img src="<?php echo DOKU_TPL; ?>images/button-donate.gif" alt="Donate" width="80" height="15" /></a>
+
+ <a <?php echo $tgt?> href="http://www.php.net" title="Powered by PHP"><img src="<?php echo DOKU_TPL; ?>images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a>
+
+ <a <?php echo $tgt?> href="http://validator.w3.org/check/referer" title="Valid XHTML 1.0"><img src="<?php echo DOKU_TPL; ?>images/button-xhtml.png" width="80" height="15" alt="Valid XHTML 1.0" /></a>
+
+ <a <?php echo $tgt?> href="http://jigsaw.w3.org/css-validator/check/referer" title="Valid CSS"><img src="<?php echo DOKU_TPL; ?>images/button-css.png" width="80" height="15" alt="Valid CSS" /></a>
+
+ <a <?php echo $tgt?> href="http://wiki.splitbrain.org/wiki:dokuwiki" title="Driven by DokuWiki"><img src="<?php echo DOKU_TPL; ?>images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a>
+
+
+<?php
+/*
+ * The following stuff in HTML comments declares a Creative Commons
+ * License - remove this if you don't want this license for your Wiki
+ */
+?>
+
+<!--
+
+<rdf:RDF xmlns="http://web.resource.org/cc/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<Work rdf:about="">
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
+ <license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/" />
+</Work>
+
+<License rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.0/">
+ <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <permits rdf:resource="http://web.resource.org/cc/Distribution" />
+ <requires rdf:resource="http://web.resource.org/cc/Notice" />
+ <requires rdf:resource="http://web.resource.org/cc/Attribution" />
+ <prohibits rdf:resource="http://web.resource.org/cc/CommercialUse" />
+ <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
+</License>
+
+</rdf:RDF>
+
+-->
+
+<?php
+if ($conf['allowdebug']) {
+ echo '<!-- page made in '.round(delta_time(DOKU_START_TIME), 3).' seconds -->';
+}
+?>
+
+</div>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/admin.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/admin.png
new file mode 100644
index 00000000..bb6292a4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/admin.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/backlink.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/backlink.png
new file mode 100644
index 00000000..69a232c3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/backlink.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/create.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/create.png
new file mode 100644
index 00000000..cbc86459
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/create.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/delicious.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/delicious.gif
new file mode 100644
index 00000000..a4d88e53
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/delicious.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/digg.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/digg.gif
new file mode 100644
index 00000000..becd3b33
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/digg.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/edit.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/edit.png
new file mode 100644
index 00000000..d5dccbb7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/edit.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/google.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/google.gif
new file mode 100644
index 00000000..15369dd7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/google.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/history.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/history.png
new file mode 100644
index 00000000..e32e1a55
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/history.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/index.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/index.png
new file mode 100644
index 00000000..bc261a7f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/index.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/login.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/login.png
new file mode 100644
index 00000000..ba9f104f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/login.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/previous.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/previous.png
new file mode 100644
index 00000000..bc3d5d84
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/previous.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/profile.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/profile.png
new file mode 100644
index 00000000..633ae914
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/profile.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/recent.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/recent.png
new file mode 100644
index 00000000..b1808dec
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/recent.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/show.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/show.png
new file mode 100644
index 00000000..17fb91d8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/show.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/subscribe.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/subscribe.png
new file mode 100644
index 00000000..d692bf84
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/subscribe.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/top.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/top.png
new file mode 100644
index 00000000..b79a36d0
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/top.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/unsubscribe.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/unsubscribe.png
new file mode 100644
index 00000000..d2b55aa5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/actions/unsubscribe.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/black_arrow.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/black_arrow.gif
new file mode 100644
index 00000000..72908cb6
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/black_arrow.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/faded_background.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/faded_background.png
new file mode 100644
index 00000000..78d1bf03
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/faded_background.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/favicon.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/favicon.png
new file mode 100644
index 00000000..bbeb278d
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/favicon.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/find.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/find.gif
new file mode 100644
index 00000000..0a7193dd
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/find.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_background.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_background.png
new file mode 100644
index 00000000..1e9a1736
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_background.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_bc.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_bc.png
new file mode 100644
index 00000000..1cbabd3f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_bc.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_logo.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_logo.png
new file mode 100644
index 00000000..c4c3a89b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_logo.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_status.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_status.png
new file mode 100644
index 00000000..613693d3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/gradient_status.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/user_icon.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/user_icon.png
new file mode 100644
index 00000000..7335517b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/user_icon.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/wiki_logo.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/wiki_logo.png
new file mode 100644
index 00000000..397b73df
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/b/wiki_logo.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/bullet.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/bullet.gif
new file mode 100644
index 00000000..e10e3760
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/bullet.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-cc.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-cc.gif
new file mode 100644
index 00000000..5861d637
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-cc.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-css.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-css.png
new file mode 100644
index 00000000..706325e1
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-css.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-donate.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-donate.gif
new file mode 100644
index 00000000..ec682c6b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-donate.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-dw.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-dw.png
new file mode 100644
index 00000000..39d5f56a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-dw.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-php.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-php.gif
new file mode 100644
index 00000000..28f329aa
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-php.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-rss.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-rss.png
new file mode 100644
index 00000000..b036f715
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-rss.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-xhtml.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-xhtml.png
new file mode 100644
index 00000000..ec686442
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/button-xhtml.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/buttonshadow.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/buttonshadow.png
new file mode 100644
index 00000000..f60be309
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/buttonshadow.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/closed.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/closed.gif
new file mode 100644
index 00000000..ed106694
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/closed.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon.ico b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon.ico
new file mode 100644
index 00000000..5720d1ed
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon.ico
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_blue.ico b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_blue.ico
new file mode 100644
index 00000000..547aaae4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_blue.ico
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_green.ico b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_green.ico
new file mode 100644
index 00000000..ef55da6c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_green.ico
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_plain.ico b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_plain.ico
new file mode 100644
index 00000000..8b9616ab
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/favicon_plain.ico
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/inputshadow.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/inputshadow.png
new file mode 100644
index 00000000..d286beb2
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/inputshadow.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/link_icon.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/link_icon.gif
new file mode 100644
index 00000000..815ccb1b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/link_icon.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/mail_icon.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/mail_icon.gif
new file mode 100644
index 00000000..50a87a9a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/mail_icon.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/open.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/open.gif
new file mode 100644
index 00000000..d9adc8b8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/open.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/admin.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/admin.png
new file mode 100644
index 00000000..75dfdf60
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/admin.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/backlink.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/backlink.png
new file mode 100644
index 00000000..b583cee8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/backlink.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/create.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/create.png
new file mode 100644
index 00000000..a0c8dcb5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/create.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/delicious.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/delicious.gif
new file mode 100644
index 00000000..a4d88e53
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/delicious.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/digg.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/digg.gif
new file mode 100644
index 00000000..becd3b33
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/digg.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/edit.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/edit.png
new file mode 100644
index 00000000..a0c8dcb5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/edit.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/google.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/google.gif
new file mode 100644
index 00000000..15369dd7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/google.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/history.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/history.png
new file mode 100644
index 00000000..e8a22abe
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/history.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/index.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/index.png
new file mode 100644
index 00000000..f487164e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/index.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/login.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/login.png
new file mode 100644
index 00000000..66cc1e9e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/login.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/previous.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/previous.png
new file mode 100644
index 00000000..793412ac
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/previous.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/profile.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/profile.png
new file mode 100644
index 00000000..c800c26c
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/profile.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/recent.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/recent.png
new file mode 100644
index 00000000..2b937ff9
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/recent.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/show.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/show.png
new file mode 100644
index 00000000..52a09596
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/show.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/subscribe.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/subscribe.png
new file mode 100644
index 00000000..efa97566
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/subscribe.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/top.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/top.png
new file mode 100644
index 00000000..7154e1d9
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/top.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/unsubscribe.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/unsubscribe.png
new file mode 100644
index 00000000..951509c5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/actions/unsubscribe.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/faded_background.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/faded_background.png
new file mode 100644
index 00000000..eda77e26
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/faded_background.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_background.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_background.png
new file mode 100644
index 00000000..d9c70825
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_background.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_bc.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_bc.png
new file mode 100644
index 00000000..92bd4a42
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_bc.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_logo.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_logo.png
new file mode 100644
index 00000000..6afaaa13
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_logo.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_status.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_status.png
new file mode 100644
index 00000000..1b6a06bc
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/gradient_status.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/wiki_logo.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/wiki_logo.png
new file mode 100644
index 00000000..0c192b94
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/p/wiki_logo.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/admin.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/admin.png
new file mode 100644
index 00000000..bb6292a4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/admin.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/backlink.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/backlink.png
new file mode 100644
index 00000000..5658c4de
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/backlink.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/create.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/create.png
new file mode 100644
index 00000000..cbc86459
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/create.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/delicious.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/delicious.gif
new file mode 100644
index 00000000..a4d88e53
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/delicious.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/digg.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/digg.gif
new file mode 100644
index 00000000..becd3b33
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/digg.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/edit.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/edit.png
new file mode 100644
index 00000000..d5dccbb7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/edit.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/google.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/google.gif
new file mode 100644
index 00000000..15369dd7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/google.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/history.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/history.png
new file mode 100644
index 00000000..5a7d0d12
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/history.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/index.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/index.png
new file mode 100644
index 00000000..bc261a7f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/index.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/login.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/login.png
new file mode 100644
index 00000000..9706d5d9
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/login.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/previous.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/previous.png
new file mode 100644
index 00000000..9c538bec
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/previous.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/profile.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/profile.png
new file mode 100644
index 00000000..633ae914
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/profile.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/recent.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/recent.png
new file mode 100644
index 00000000..4eb61e98
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/recent.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/show.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/show.png
new file mode 100644
index 00000000..17fb91d8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/show.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/subscribe.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/subscribe.png
new file mode 100644
index 00000000..d692bf84
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/subscribe.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/top.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/top.png
new file mode 100644
index 00000000..3bd4b3f0
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/top.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/unsubscribe.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/unsubscribe.png
new file mode 100644
index 00000000..d2b55aa5
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/actions/unsubscribe.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/black_arrow.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/black_arrow.gif
new file mode 100644
index 00000000..72908cb6
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/black_arrow.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/faded_background.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/faded_background.png
new file mode 100644
index 00000000..5c12fdb4
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/faded_background.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/favicon.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/favicon.png
new file mode 100644
index 00000000..7fab664a
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/favicon.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/find.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/find.gif
new file mode 100644
index 00000000..4bff3b79
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/find.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_background.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_background.png
new file mode 100644
index 00000000..54fd373e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_background.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_bc.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_bc.png
new file mode 100644
index 00000000..1cbabd3f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_bc.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_logo.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_logo.png
new file mode 100644
index 00000000..48808546
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_logo.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_status.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_status.png
new file mode 100644
index 00000000..613693d3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/gradient_status.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/user_icon.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/user_icon.png
new file mode 100644
index 00000000..9a540998
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/user_icon.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/wiki_logo.png b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/wiki_logo.png
new file mode 100644
index 00000000..e8bde0f9
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/r/wiki_logo.png
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/tocdot2.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/tocdot2.gif
new file mode 100644
index 00000000..3d39c2e7
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/tocdot2.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/windows.gif b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/windows.gif
new file mode 100644
index 00000000..4f12acce
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/images/windows.gif
Binary files differ
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/builder.js b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/builder.js
new file mode 100644
index 00000000..199afc12
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/builder.js
@@ -0,0 +1,131 @@
+// script.aculo.us builder.js v1.7.0, Fri Jan 19 19:16:36 CET 2007
+
+// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+var Builder = {
+ NODEMAP: {
+ AREA: 'map',
+ CAPTION: 'table',
+ COL: 'table',
+ COLGROUP: 'table',
+ LEGEND: 'fieldset',
+ OPTGROUP: 'select',
+ OPTION: 'select',
+ PARAM: 'object',
+ TBODY: 'table',
+ TD: 'table',
+ TFOOT: 'table',
+ TH: 'table',
+ THEAD: 'table',
+ TR: 'table'
+ },
+ // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
+ // due to a Firefox bug
+ node: function(elementName) {
+ elementName = elementName.toUpperCase();
+
+ // try innerHTML approach
+ var parentTag = this.NODEMAP[elementName] || 'div';
+ var parentElement = document.createElement(parentTag);
+ try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
+ parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
+ } catch(e) {}
+ var element = parentElement.firstChild || null;
+
+ // see if browser added wrapping tags
+ if(element && (element.tagName.toUpperCase() != elementName))
+ element = element.getElementsByTagName(elementName)[0];
+
+ // fallback to createElement approach
+ if(!element) element = document.createElement(elementName);
+
+ // abort if nothing could be created
+ if(!element) return;
+
+ // attributes (or text)
+ if(arguments[1])
+ if(this._isStringOrNumber(arguments[1]) ||
+ (arguments[1] instanceof Array)) {
+ this._children(element, arguments[1]);
+ } else {
+ var attrs = this._attributes(arguments[1]);
+ if(attrs.length) {
+ try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
+ parentElement.innerHTML = "<" +elementName + " " +
+ attrs + "></" + elementName + ">";
+ } catch(e) {}
+ element = parentElement.firstChild || null;
+ // workaround firefox 1.0.X bug
+ if(!element) {
+ element = document.createElement(elementName);
+ for(attr in arguments[1])
+ element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
+ }
+ if(element.tagName.toUpperCase() != elementName)
+ element = parentElement.getElementsByTagName(elementName)[0];
+ }
+ }
+
+ // text, or array of children
+ if(arguments[2])
+ this._children(element, arguments[2]);
+
+ return element;
+ },
+ _text: function(text) {
+ return document.createTextNode(text);
+ },
+
+ ATTR_MAP: {
+ 'className': 'class',
+ 'htmlFor': 'for'
+ },
+
+ _attributes: function(attributes) {
+ var attrs = [];
+ for(attribute in attributes)
+ attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
+ '="' + attributes[attribute].toString().escapeHTML() + '"');
+ return attrs.join(" ");
+ },
+ _children: function(element, children) {
+ if(typeof children=='object') { // array can hold nodes and text
+ children.flatten().each( function(e) {
+ if(typeof e=='object')
+ element.appendChild(e)
+ else
+ if(Builder._isStringOrNumber(e))
+ element.appendChild(Builder._text(e));
+ });
+ } else
+ if(Builder._isStringOrNumber(children))
+ element.appendChild(Builder._text(children));
+ },
+ _isStringOrNumber: function(param) {
+ return(typeof param=='string' || typeof param=='number');
+ },
+ build: function(html) {
+ var element = this.node('div');
+ $(element).update(html.strip());
+ return element.down();
+ },
+ dump: function(scope) {
+ if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope
+
+ var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
+ "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
+ "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
+ "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
+ "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
+ "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
+
+ tags.each( function(tag){
+ scope[tag] = function() {
+ return Builder.node.apply(Builder, [tag].concat($A(arguments)));
+ }
+ });
+ }
+}
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/controls.js b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/controls.js
new file mode 100644
index 00000000..46f2cc18
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/controls.js
@@ -0,0 +1,835 @@
+// script.aculo.us controls.js v1.7.0, Fri Jan 19 19:16:36 CET 2007
+
+// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// (c) 2005, 2006 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
+// (c) 2005, 2006 Jon Tirsen (http://www.tirsen.com)
+// Contributors:
+// Richard Livsey
+// Rahul Bhargava
+// Rob Wills
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+// Autocompleter.Base handles all the autocompletion functionality
+// that's independent of the data source for autocompletion. This
+// includes drawing the autocompletion menu, observing keyboard
+// and mouse events, and similar.
+//
+// Specific autocompleters need to provide, at the very least,
+// a getUpdatedChoices function that will be invoked every time
+// the text inside the monitored textbox changes. This method
+// should get the text for which to provide autocompletion by
+// invoking this.getToken(), NOT by directly accessing
+// this.element.value. This is to allow incremental tokenized
+// autocompletion. Specific auto-completion logic (AJAX, etc)
+// belongs in getUpdatedChoices.
+//
+// Tokenized incremental autocompletion is enabled automatically
+// when an autocompleter is instantiated with the 'tokens' option
+// in the options parameter, e.g.:
+// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
+// will incrementally autocomplete with a comma as the token.
+// Additionally, ',' in the above example can be replaced with
+// a token array, e.g. { tokens: [',', '\n'] } which
+// enables autocompletion on multiple tokens. This is most
+// useful when one of the tokens is \n (a newline), as it
+// allows smart autocompletion after linebreaks.
+
+if(typeof Effect == 'undefined')
+ throw("controls.js requires including script.aculo.us' effects.js library");
+
+var Autocompleter = {}
+Autocompleter.Base = function() {};
+Autocompleter.Base.prototype = {
+ baseInitialize: function(element, update, options) {
+ this.element = $(element);
+ this.update = $(update);
+ this.hasFocus = false;
+ this.changed = false;
+ this.active = false;
+ this.index = 0;
+ this.entryCount = 0;
+
+ if(this.setOptions)
+ this.setOptions(options);
+ else
+ this.options = options || {};
+
+ this.options.paramName = this.options.paramName || this.element.name;
+ this.options.tokens = this.options.tokens || [];
+ this.options.frequency = this.options.frequency || 0.4;
+ this.options.minChars = this.options.minChars || 1;
+ this.options.onShow = this.options.onShow ||
+ function(element, update){
+ if(!update.style.position || update.style.position=='absolute') {
+ update.style.position = 'absolute';
+ Position.clone(element, update, {
+ setHeight: false,
+ offsetTop: element.offsetHeight
+ });
+ }
+ Effect.Appear(update,{duration:0.15});
+ };
+ this.options.onHide = this.options.onHide ||
+ function(element, update){ new Effect.Fade(update,{duration:0.15}) };
+
+ if(typeof(this.options.tokens) == 'string')
+ this.options.tokens = new Array(this.options.tokens);
+
+ this.observer = null;
+
+ this.element.setAttribute('autocomplete','off');
+
+ Element.hide(this.update);
+
+ Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this));
+ Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this));
+ },
+
+ show: function() {
+ if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
+ if(!this.iefix &&
+ (navigator.appVersion.indexOf('MSIE')>0) &&
+ (navigator.userAgent.indexOf('Opera')<0) &&
+ (Element.getStyle(this.update, 'position')=='absolute')) {
+ new Insertion.After(this.update,
+ '<iframe id="' + this.update.id + '_iefix" '+
+ 'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
+ 'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
+ this.iefix = $(this.update.id+'_iefix');
+ }
+ if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
+ },
+
+ fixIEOverlapping: function() {
+ Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
+ this.iefix.style.zIndex = 1;
+ this.update.style.zIndex = 2;
+ Element.show(this.iefix);
+ },
+
+ hide: function() {
+ this.stopIndicator();
+ if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
+ if(this.iefix) Element.hide(this.iefix);
+ },
+
+ startIndicator: function() {
+ if(this.options.indicator) Element.show(this.options.indicator);
+ },
+
+ stopIndicator: function() {
+ if(this.options.indicator) Element.hide(this.options.indicator);
+ },
+
+ onKeyPress: function(event) {
+ if(this.active)
+ switch(event.keyCode) {
+ case Event.KEY_TAB:
+ case Event.KEY_RETURN:
+ this.selectEntry();
+ Event.stop(event);
+ case Event.KEY_ESC:
+ this.hide();
+ this.active = false;
+ Event.stop(event);
+ return;
+ case Event.KEY_LEFT:
+ case Event.KEY_RIGHT:
+ return;
+ case Event.KEY_UP:
+ this.markPrevious();
+ this.render();
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
+ return;
+ case Event.KEY_DOWN:
+ this.markNext();
+ this.render();
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);
+ return;
+ }
+ else
+ if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
+ (navigator.appVersion.indexOf('AppleWebKit') > 0 && event.keyCode == 0)) return;
+
+ this.changed = true;
+ this.hasFocus = true;
+
+ if(this.observer) clearTimeout(this.observer);
+ this.observer =
+ setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
+ },
+
+ activate: function() {
+ this.changed = false;
+ this.hasFocus = true;
+ this.getUpdatedChoices();
+ },
+
+ onHover: function(event) {
+ var element = Event.findElement(event, 'LI');
+ if(this.index != element.autocompleteIndex)
+ {
+ this.index = element.autocompleteIndex;
+ this.render();
+ }
+ Event.stop(event);
+ },
+
+ onClick: function(event) {
+ var element = Event.findElement(event, 'LI');
+ this.index = element.autocompleteIndex;
+ this.selectEntry();
+ this.hide();
+ },
+
+ onBlur: function(event) {
+ // needed to make click events working
+ setTimeout(this.hide.bind(this), 250);
+ this.hasFocus = false;
+ this.active = false;
+ },
+
+ render: function() {
+ if(this.entryCount > 0) {
+ for (var i = 0; i < this.entryCount; i++)
+ this.index==i ?
+ Element.addClassName(this.getEntry(i),"selected") :
+ Element.removeClassName(this.getEntry(i),"selected");
+
+ if(this.hasFocus) {
+ this.show();
+ this.active = true;
+ }
+ } else {
+ this.active = false;
+ this.hide();
+ }
+ },
+
+ markPrevious: function() {
+ if(this.index > 0) this.index--
+ else this.index = this.entryCount-1;
+ this.getEntry(this.index).scrollIntoView(true);
+ },
+
+ markNext: function() {
+ if(this.index < this.entryCount-1) this.index++
+ else this.index = 0;
+ this.getEntry(this.index).scrollIntoView(false);
+ },
+
+ getEntry: function(index) {
+ return this.update.firstChild.childNodes[index];
+ },
+
+ getCurrentEntry: function() {
+ return this.getEntry(this.index);
+ },
+
+ selectEntry: function() {
+ this.active = false;
+ this.updateElement(this.getCurrentEntry());
+ },
+
+ updateElement: function(selectedElement) {
+ if (this.options.updateElement) {
+ this.options.updateElement(selectedElement);
+ return;
+ }
+ var value = '';
+ if (this.options.select) {
+ var nodes = document.getElementsByClassName(this.options.select, selectedElement) || [];
+ if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
+ } else
+ value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
+
+ var lastTokenPos = this.findLastToken();
+ if (lastTokenPos != -1) {
+ var newValue = this.element.value.substr(0, lastTokenPos + 1);
+ var whitespace = this.element.value.substr(lastTokenPos + 1).match(/^\s+/);
+ if (whitespace)
+ newValue += whitespace[0];
+ this.element.value = newValue + value;
+ } else {
+ this.element.value = value;
+ }
+ this.element.focus();
+
+ if (this.options.afterUpdateElement)
+ this.options.afterUpdateElement(this.element, selectedElement);
+ },
+
+ updateChoices: function(choices) {
+ if(!this.changed && this.hasFocus) {
+ this.update.innerHTML = choices;
+ Element.cleanWhitespace(this.update);
+ Element.cleanWhitespace(this.update.down());
+
+ if(this.update.firstChild && this.update.down().childNodes) {
+ this.entryCount =
+ this.update.down().childNodes.length;
+ for (var i = 0; i < this.entryCount; i++) {
+ var entry = this.getEntry(i);
+ entry.autocompleteIndex = i;
+ this.addObservers(entry);
+ }
+ } else {
+ this.entryCount = 0;
+ }
+
+ this.stopIndicator();
+ this.index = 0;
+
+ if(this.entryCount==1 && this.options.autoSelect) {
+ this.selectEntry();
+ this.hide();
+ } else {
+ this.render();
+ }
+ }
+ },
+
+ addObservers: function(element) {
+ Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
+ Event.observe(element, "click", this.onClick.bindAsEventListener(this));
+ },
+
+ onObserverEvent: function() {
+ this.changed = false;
+ if(this.getToken().length>=this.options.minChars) {
+ this.startIndicator();
+ this.getUpdatedChoices();
+ } else {
+ this.active = false;
+ this.hide();
+ }
+ },
+
+ getToken: function() {
+ var tokenPos = this.findLastToken();
+ if (tokenPos != -1)
+ var ret = this.element.value.substr(tokenPos + 1).replace(/^\s+/,'').replace(/\s+$/,'');
+ else
+ var ret = this.element.value;
+
+ return /\n/.test(ret) ? '' : ret;
+ },
+
+ findLastToken: function() {
+ var lastTokenPos = -1;
+
+ for (var i=0; i<this.options.tokens.length; i++) {
+ var thisTokenPos = this.element.value.lastIndexOf(this.options.tokens[i]);
+ if (thisTokenPos > lastTokenPos)
+ lastTokenPos = thisTokenPos;
+ }
+ return lastTokenPos;
+ }
+}
+
+Ajax.Autocompleter = Class.create();
+Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), {
+ initialize: function(element, update, url, options) {
+ this.baseInitialize(element, update, options);
+ this.options.asynchronous = true;
+ this.options.onComplete = this.onComplete.bind(this);
+ this.options.defaultParams = this.options.parameters || null;
+ this.url = url;
+ },
+
+ getUpdatedChoices: function() {
+ entry = encodeURIComponent(this.options.paramName) + '=' +
+ encodeURIComponent(this.getToken());
+
+ this.options.parameters = this.options.callback ?
+ this.options.callback(this.element, entry) : entry;
+
+ if(this.options.defaultParams)
+ this.options.parameters += '&' + this.options.defaultParams;
+
+ new Ajax.Request(this.url, this.options);
+ },
+
+ onComplete: function(request) {
+ this.updateChoices(request.responseText);
+ }
+
+});
+
+// The local array autocompleter. Used when you'd prefer to
+// inject an array of autocompletion options into the page, rather
+// than sending out Ajax queries, which can be quite slow sometimes.
+//
+// The constructor takes four parameters. The first two are, as usual,
+// the id of the monitored textbox, and id of the autocompletion menu.
+// The third is the array you want to autocomplete from, and the fourth
+// is the options block.
+//
+// Extra local autocompletion options:
+// - choices - How many autocompletion choices to offer
+//
+// - partialSearch - If false, the autocompleter will match entered
+// text only at the beginning of strings in the
+// autocomplete array. Defaults to true, which will
+// match text at the beginning of any *word* in the
+// strings in the autocomplete array. If you want to
+// search anywhere in the string, additionally set
+// the option fullSearch to true (default: off).
+//
+// - fullSsearch - Search anywhere in autocomplete array strings.
+//
+// - partialChars - How many characters to enter before triggering
+// a partial match (unlike minChars, which defines
+// how many characters are required to do any match
+// at all). Defaults to 2.
+//
+// - ignoreCase - Whether to ignore case when autocompleting.
+// Defaults to true.
+//
+// It's possible to pass in a custom function as the 'selector'
+// option, if you prefer to write your own autocompletion logic.
+// In that case, the other options above will not apply unless
+// you support them.
+
+Autocompleter.Local = Class.create();
+Autocompleter.Local.prototype = Object.extend(new Autocompleter.Base(), {
+ initialize: function(element, update, array, options) {
+ this.baseInitialize(element, update, options);
+ this.options.array = array;
+ },
+
+ getUpdatedChoices: function() {
+ this.updateChoices(this.options.selector(this));
+ },
+
+ setOptions: function(options) {
+ this.options = Object.extend({
+ choices: 10,
+ partialSearch: true,
+ partialChars: 2,
+ ignoreCase: true,
+ fullSearch: false,
+ selector: function(instance) {
+ var ret = []; // Beginning matches
+ var partial = []; // Inside matches
+ var entry = instance.getToken();
+ var count = 0;
+
+ for (var i = 0; i < instance.options.array.length &&
+ ret.length < instance.options.choices ; i++) {
+
+ var elem = instance.options.array[i];
+ var foundPos = instance.options.ignoreCase ?
+ elem.toLowerCase().indexOf(entry.toLowerCase()) :
+ elem.indexOf(entry);
+
+ while (foundPos != -1) {
+ if (foundPos == 0 && elem.length != entry.length) {
+ ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +
+ elem.substr(entry.length) + "</li>");
+ break;
+ } else if (entry.length >= instance.options.partialChars &&
+ instance.options.partialSearch && foundPos != -1) {
+ if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
+ partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
+ elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
+ foundPos + entry.length) + "</li>");
+ break;
+ }
+ }
+
+ foundPos = instance.options.ignoreCase ?
+ elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :
+ elem.indexOf(entry, foundPos + 1);
+
+ }
+ }
+ if (partial.length)
+ ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
+ return "<ul>" + ret.join('') + "</ul>";
+ }
+ }, options || {});
+ }
+});
+
+// AJAX in-place editor
+//
+// see documentation on http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor
+
+// Use this if you notice weird scrolling problems on some browsers,
+// the DOM might be a bit confused when this gets called so do this
+// waits 1 ms (with setTimeout) until it does the activation
+Field.scrollFreeActivate = function(field) {
+ setTimeout(function() {
+ Field.activate(field);
+ }, 1);
+}
+
+Ajax.InPlaceEditor = Class.create();
+Ajax.InPlaceEditor.defaultHighlightColor = "#FFFF99";
+Ajax.InPlaceEditor.prototype = {
+ initialize: function(element, url, options) {
+ this.url = url;
+ this.element = $(element);
+
+ this.options = Object.extend({
+ paramName: "value",
+ okButton: true,
+ okText: "ok",
+ cancelLink: true,
+ cancelText: "cancel",
+ savingText: "Saving...",
+ clickToEditText: "Click to edit",
+ okText: "ok",
+ rows: 1,
+ onComplete: function(transport, element) {
+ new Effect.Highlight(element, {startcolor: this.options.highlightcolor});
+ },
+ onFailure: function(transport) {
+ alert("Error communicating with the server: " + transport.responseText.stripTags());
+ },
+ callback: function(form) {
+ return Form.serialize(form);
+ },
+ handleLineBreaks: true,
+ loadingText: 'Loading...',
+ savingClassName: 'inplaceeditor-saving',
+ loadingClassName: 'inplaceeditor-loading',
+ formClassName: 'inplaceeditor-form',
+ highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor,
+ highlightendcolor: "#FFFFFF",
+ externalControl: null,
+ submitOnBlur: false,
+ ajaxOptions: {},
+ evalScripts: false
+ }, options || {});
+
+ if(!this.options.formId && this.element.id) {
+ this.options.formId = this.element.id + "-inplaceeditor";
+ if ($(this.options.formId)) {
+ // there's already a form with that name, don't specify an id
+ this.options.formId = null;
+ }
+ }
+
+ if (this.options.externalControl) {
+ this.options.externalControl = $(this.options.externalControl);
+ }
+
+ this.originalBackground = Element.getStyle(this.element, 'background-color');
+ if (!this.originalBackground) {
+ this.originalBackground = "transparent";
+ }
+
+ this.element.title = this.options.clickToEditText;
+
+ this.onclickListener = this.enterEditMode.bindAsEventListener(this);
+ this.mouseoverListener = this.enterHover.bindAsEventListener(this);
+ this.mouseoutListener = this.leaveHover.bindAsEventListener(this);
+ Event.observe(this.element, 'click', this.onclickListener);
+ Event.observe(this.element, 'mouseover', this.mouseoverListener);
+ Event.observe(this.element, 'mouseout', this.mouseoutListener);
+ if (this.options.externalControl) {
+ Event.observe(this.options.externalControl, 'click', this.onclickListener);
+ Event.observe(this.options.externalControl, 'mouseover', this.mouseoverListener);
+ Event.observe(this.options.externalControl, 'mouseout', this.mouseoutListener);
+ }
+ },
+ enterEditMode: function(evt) {
+ if (this.saving) return;
+ if (this.editing) return;
+ this.editing = true;
+ this.onEnterEditMode();
+ if (this.options.externalControl) {
+ Element.hide(this.options.externalControl);
+ }
+ Element.hide(this.element);
+ this.createForm();
+ this.element.parentNode.insertBefore(this.form, this.element);
+ if (!this.options.loadTextURL) Field.scrollFreeActivate(this.editField);
+ // stop the event to avoid a page refresh in Safari
+ if (evt) {
+ Event.stop(evt);
+ }
+ return false;
+ },
+ createForm: function() {
+ this.form = document.createElement("form");
+ this.form.id = this.options.formId;
+ Element.addClassName(this.form, this.options.formClassName)
+ this.form.onsubmit = this.onSubmit.bind(this);
+
+ this.createEditField();
+
+ if (this.options.textarea) {
+ var br = document.createElement("br");
+ this.form.appendChild(br);
+ }
+
+ if (this.options.okButton) {
+ okButton = document.createElement("input");
+ okButton.type = "submit";
+ okButton.value = this.options.okText;
+ okButton.className = 'editor_ok_button';
+ this.form.appendChild(okButton);
+ }
+
+ if (this.options.cancelLink) {
+ cancelLink = document.createElement("a");
+ cancelLink.href = "#";
+ cancelLink.appendChild(document.createTextNode(this.options.cancelText));
+ cancelLink.onclick = this.onclickCancel.bind(this);
+ cancelLink.className = 'editor_cancel';
+ this.form.appendChild(cancelLink);
+ }
+ },
+ hasHTMLLineBreaks: function(string) {
+ if (!this.options.handleLineBreaks) return false;
+ return string.match(/<br/i) || string.match(/<p>/i);
+ },
+ convertHTMLLineBreaks: function(string) {
+ return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "");
+ },
+ createEditField: function() {
+ var text;
+ if(this.options.loadTextURL) {
+ text = this.options.loadingText;
+ } else {
+ text = this.getText();
+ }
+
+ var obj = this;
+
+ if (this.options.rows == 1 && !this.hasHTMLLineBreaks(text)) {
+ this.options.textarea = false;
+ var textField = document.createElement("input");
+ textField.obj = this;
+ textField.type = "text";
+ textField.name = this.options.paramName;
+ textField.value = text;
+ textField.style.backgroundColor = this.options.highlightcolor;
+ textField.className = 'editor_field';
+ var size = this.options.size || this.options.cols || 0;
+ if (size != 0) textField.size = size;
+ if (this.options.submitOnBlur)
+ textField.onblur = this.onSubmit.bind(this);
+ this.editField = textField;
+ } else {
+ this.options.textarea = true;
+ var textArea = document.createElement("textarea");
+ textArea.obj = this;
+ textArea.name = this.options.paramName;
+ textArea.value = this.convertHTMLLineBreaks(text);
+ textArea.rows = this.options.rows;
+ textArea.cols = this.options.cols || 40;
+ textArea.className = 'editor_field';
+ if (this.options.submitOnBlur)
+ textArea.onblur = this.onSubmit.bind(this);
+ this.editField = textArea;
+ }
+
+ if(this.options.loadTextURL) {
+ this.loadExternalText();
+ }
+ this.form.appendChild(this.editField);
+ },
+ getText: function() {
+ return this.element.innerHTML;
+ },
+ loadExternalText: function() {
+ Element.addClassName(this.form, this.options.loadingClassName);
+ this.editField.disabled = true;
+ new Ajax.Request(
+ this.options.loadTextURL,
+ Object.extend({
+ asynchronous: true,
+ onComplete: this.onLoadedExternalText.bind(this)
+ }, this.options.ajaxOptions)
+ );
+ },
+ onLoadedExternalText: function(transport) {
+ Element.removeClassName(this.form, this.options.loadingClassName);
+ this.editField.disabled = false;
+ this.editField.value = transport.responseText.stripTags();
+ Field.scrollFreeActivate(this.editField);
+ },
+ onclickCancel: function() {
+ this.onComplete();
+ this.leaveEditMode();
+ return false;
+ },
+ onFailure: function(transport) {
+ this.options.onFailure(transport);
+ if (this.oldInnerHTML) {
+ this.element.innerHTML = this.oldInnerHTML;
+ this.oldInnerHTML = null;
+ }
+ return false;
+ },
+ onSubmit: function() {
+ // onLoading resets these so we need to save them away for the Ajax call
+ var form = this.form;
+ var value = this.editField.value;
+
+ // do this first, sometimes the ajax call returns before we get a chance to switch on Saving...
+ // which means this will actually switch on Saving... *after* we've left edit mode causing Saving...
+ // to be displayed indefinitely
+ this.onLoading();
+
+ if (this.options.evalScripts) {
+ new Ajax.Request(
+ this.url, Object.extend({
+ parameters: this.options.callback(form, value),
+ onComplete: this.onComplete.bind(this),
+ onFailure: this.onFailure.bind(this),
+ asynchronous:true,
+ evalScripts:true
+ }, this.options.ajaxOptions));
+ } else {
+ new Ajax.Updater(
+ { success: this.element,
+ // don't update on failure (this could be an option)
+ failure: null },
+ this.url, Object.extend({
+ parameters: this.options.callback(form, value),
+ onComplete: this.onComplete.bind(this),
+ onFailure: this.onFailure.bind(this)
+ }, this.options.ajaxOptions));
+ }
+ // stop the event to avoid a page refresh in Safari
+ if (arguments.length > 1) {
+ Event.stop(arguments[0]);
+ }
+ return false;
+ },
+ onLoading: function() {
+ this.saving = true;
+ this.removeForm();
+ this.leaveHover();
+ this.showSaving();
+ },
+ showSaving: function() {
+ this.oldInnerHTML = this.element.innerHTML;
+ this.element.innerHTML = this.options.savingText;
+ Element.addClassName(this.element, this.options.savingClassName);
+ this.element.style.backgroundColor = this.originalBackground;
+ Element.show(this.element);
+ },
+ removeForm: function() {
+ if(this.form) {
+ if (this.form.parentNode) Element.remove(this.form);
+ this.form = null;
+ }
+ },
+ enterHover: function() {
+ if (this.saving) return;
+ this.element.style.backgroundColor = this.options.highlightcolor;
+ if (this.effect) {
+ this.effect.cancel();
+ }
+ Element.addClassName(this.element, this.options.hoverClassName)
+ },
+ leaveHover: function() {
+ if (this.options.backgroundColor) {
+ this.element.style.backgroundColor = this.oldBackground;
+ }
+ Element.removeClassName(this.element, this.options.hoverClassName)
+ if (this.saving) return;
+ this.effect = new Effect.Highlight(this.element, {
+ startcolor: this.options.highlightcolor,
+ endcolor: this.options.highlightendcolor,
+ restorecolor: this.originalBackground
+ });
+ },
+ leaveEditMode: function() {
+ Element.removeClassName(this.element, this.options.savingClassName);
+ this.removeForm();
+ this.leaveHover();
+ this.element.style.backgroundColor = this.originalBackground;
+ Element.show(this.element);
+ if (this.options.externalControl) {
+ Element.show(this.options.externalControl);
+ }
+ this.editing = false;
+ this.saving = false;
+ this.oldInnerHTML = null;
+ this.onLeaveEditMode();
+ },
+ onComplete: function(transport) {
+ this.leaveEditMode();
+ this.options.onComplete.bind(this)(transport, this.element);
+ },
+ onEnterEditMode: function() {},
+ onLeaveEditMode: function() {},
+ dispose: function() {
+ if (this.oldInnerHTML) {
+ this.element.innerHTML = this.oldInnerHTML;
+ }
+ this.leaveEditMode();
+ Event.stopObserving(this.element, 'click', this.onclickListener);
+ Event.stopObserving(this.element, 'mouseover', this.mouseoverListener);
+ Event.stopObserving(this.element, 'mouseout', this.mouseoutListener);
+ if (this.options.externalControl) {
+ Event.stopObserving(this.options.externalControl, 'click', this.onclickListener);
+ Event.stopObserving(this.options.externalControl, 'mouseover', this.mouseoverListener);
+ Event.stopObserving(this.options.externalControl, 'mouseout', this.mouseoutListener);
+ }
+ }
+};
+
+Ajax.InPlaceCollectionEditor = Class.create();
+Object.extend(Ajax.InPlaceCollectionEditor.prototype, Ajax.InPlaceEditor.prototype);
+Object.extend(Ajax.InPlaceCollectionEditor.prototype, {
+ createEditField: function() {
+ if (!this.cached_selectTag) {
+ var selectTag = document.createElement("select");
+ var collection = this.options.collection || [];
+ var optionTag;
+ collection.each(function(e,i) {
+ optionTag = document.createElement("option");
+ optionTag.value = (e instanceof Array) ? e[0] : e;
+ if((typeof this.options.value == 'undefined') &&
+ ((e instanceof Array) ? this.element.innerHTML == e[1] : e == optionTag.value)) optionTag.selected = true;
+ if(this.options.value==optionTag.value) optionTag.selected = true;
+ optionTag.appendChild(document.createTextNode((e instanceof Array) ? e[1] : e));
+ selectTag.appendChild(optionTag);
+ }.bind(this));
+ this.cached_selectTag = selectTag;
+ }
+
+ this.editField = this.cached_selectTag;
+ if(this.options.loadTextURL) this.loadExternalText();
+ this.form.appendChild(this.editField);
+ this.options.callback = function(form, value) {
+ return "value=" + encodeURIComponent(value);
+ }
+ }
+});
+
+// Delayed observer, like Form.Element.Observer,
+// but waits for delay after last key input
+// Ideal for live-search fields
+
+Form.Element.DelayedObserver = Class.create();
+Form.Element.DelayedObserver.prototype = {
+ initialize: function(element, delay, callback) {
+ this.delay = delay || 0.5;
+ this.element = $(element);
+ this.callback = callback;
+ this.timer = null;
+ this.lastValue = $F(this.element);
+ Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
+ },
+ delayedListener: function(event) {
+ if(this.lastValue == $F(this.element)) return;
+ if(this.timer) clearTimeout(this.timer);
+ this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
+ this.lastValue = $F(this.element);
+ },
+ onTimerEvent: function() {
+ this.timer = null;
+ this.callback(this.element, $F(this.element));
+ }
+};
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/dragdrop.js b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/dragdrop.js
new file mode 100644
index 00000000..32c91bc3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/dragdrop.js
@@ -0,0 +1,944 @@
+// script.aculo.us dragdrop.js v1.7.0, Fri Jan 19 19:16:36 CET 2007
+
+// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// (c) 2005, 2006 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+if(typeof Effect == 'undefined')
+ throw("dragdrop.js requires including script.aculo.us' effects.js library");
+
+var Droppables = {
+ drops: [],
+
+ remove: function(element) {
+ this.drops = this.drops.reject(function(d) { return d.element==$(element) });
+ },
+
+ add: function(element) {
+ element = $(element);
+ var options = Object.extend({
+ greedy: true,
+ hoverclass: null,
+ tree: false
+ }, arguments[1] || {});
+
+ // cache containers
+ if(options.containment) {
+ options._containers = [];
+ var containment = options.containment;
+ if((typeof containment == 'object') &&
+ (containment.constructor == Array)) {
+ containment.each( function(c) { options._containers.push($(c)) });
+ } else {
+ options._containers.push($(containment));
+ }
+ }
+
+ if(options.accept) options.accept = [options.accept].flatten();
+
+ Element.makePositioned(element); // fix IE
+ options.element = element;
+
+ this.drops.push(options);
+ },
+
+ findDeepestChild: function(drops) {
+ deepest = drops[0];
+
+ for (i = 1; i < drops.length; ++i)
+ if (Element.isParent(drops[i].element, deepest.element))
+ deepest = drops[i];
+
+ return deepest;
+ },
+
+ isContained: function(element, drop) {
+ var containmentNode;
+ if(drop.tree) {
+ containmentNode = element.treeNode;
+ } else {
+ containmentNode = element.parentNode;
+ }
+ return drop._containers.detect(function(c) { return containmentNode == c });
+ },
+
+ isAffected: function(point, element, drop) {
+ return (
+ (drop.element!=element) &&
+ ((!drop._containers) ||
+ this.isContained(element, drop)) &&
+ ((!drop.accept) ||
+ (Element.classNames(element).detect(
+ function(v) { return drop.accept.include(v) } ) )) &&
+ Position.within(drop.element, point[0], point[1]) );
+ },
+
+ deactivate: function(drop) {
+ if(drop.hoverclass)
+ Element.removeClassName(drop.element, drop.hoverclass);
+ this.last_active = null;
+ },
+
+ activate: function(drop) {
+ if(drop.hoverclass)
+ Element.addClassName(drop.element, drop.hoverclass);
+ this.last_active = drop;
+ },
+
+ show: function(point, element) {
+ if(!this.drops.length) return;
+ var affected = [];
+
+ if(this.last_active) this.deactivate(this.last_active);
+ this.drops.each( function(drop) {
+ if(Droppables.isAffected(point, element, drop))
+ affected.push(drop);
+ });
+
+ if(affected.length>0) {
+ drop = Droppables.findDeepestChild(affected);
+ Position.within(drop.element, point[0], point[1]);
+ if(drop.onHover)
+ drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
+
+ Droppables.activate(drop);
+ }
+ },
+
+ fire: function(event, element) {
+ if(!this.last_active) return;
+ Position.prepare();
+
+ if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
+ if (this.last_active.onDrop)
+ this.last_active.onDrop(element, this.last_active.element, event);
+ },
+
+ reset: function() {
+ if(this.last_active)
+ this.deactivate(this.last_active);
+ }
+}
+
+var Draggables = {
+ drags: [],
+ observers: [],
+
+ register: function(draggable) {
+ if(this.drags.length == 0) {
+ this.eventMouseUp = this.endDrag.bindAsEventListener(this);
+ this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
+ this.eventKeypress = this.keyPress.bindAsEventListener(this);
+
+ Event.observe(document, "mouseup", this.eventMouseUp);
+ Event.observe(document, "mousemove", this.eventMouseMove);
+ Event.observe(document, "keypress", this.eventKeypress);
+ }
+ this.drags.push(draggable);
+ },
+
+ unregister: function(draggable) {
+ this.drags = this.drags.reject(function(d) { return d==draggable });
+ if(this.drags.length == 0) {
+ Event.stopObserving(document, "mouseup", this.eventMouseUp);
+ Event.stopObserving(document, "mousemove", this.eventMouseMove);
+ Event.stopObserving(document, "keypress", this.eventKeypress);
+ }
+ },
+
+ activate: function(draggable) {
+ if(draggable.options.delay) {
+ this._timeout = setTimeout(function() {
+ Draggables._timeout = null;
+ window.focus();
+ Draggables.activeDraggable = draggable;
+ }.bind(this), draggable.options.delay);
+ } else {
+ window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
+ this.activeDraggable = draggable;
+ }
+ },
+
+ deactivate: function() {
+ this.activeDraggable = null;
+ },
+
+ updateDrag: function(event) {
+ if(!this.activeDraggable) return;
+ var pointer = [Event.pointerX(event), Event.pointerY(event)];
+ // Mozilla-based browsers fire successive mousemove events with
+ // the same coordinates, prevent needless redrawing (moz bug?)
+ if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
+ this._lastPointer = pointer;
+
+ this.activeDraggable.updateDrag(event, pointer);
+ },
+
+ endDrag: function(event) {
+ if(this._timeout) {
+ clearTimeout(this._timeout);
+ this._timeout = null;
+ }
+ if(!this.activeDraggable) return;
+ this._lastPointer = null;
+ this.activeDraggable.endDrag(event);
+ this.activeDraggable = null;
+ },
+
+ keyPress: function(event) {
+ if(this.activeDraggable)
+ this.activeDraggable.keyPress(event);
+ },
+
+ addObserver: function(observer) {
+ this.observers.push(observer);
+ this._cacheObserverCallbacks();
+ },
+
+ removeObserver: function(element) { // element instead of observer fixes mem leaks
+ this.observers = this.observers.reject( function(o) { return o.element==element });
+ this._cacheObserverCallbacks();
+ },
+
+ notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag'
+ if(this[eventName+'Count'] > 0)
+ this.observers.each( function(o) {
+ if(o[eventName]) o[eventName](eventName, draggable, event);
+ });
+ if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
+ },
+
+ _cacheObserverCallbacks: function() {
+ ['onStart','onEnd','onDrag'].each( function(eventName) {
+ Draggables[eventName+'Count'] = Draggables.observers.select(
+ function(o) { return o[eventName]; }
+ ).length;
+ });
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Draggable = Class.create();
+Draggable._dragging = {};
+
+Draggable.prototype = {
+ initialize: function(element) {
+ var defaults = {
+ handle: false,
+ reverteffect: function(element, top_offset, left_offset) {
+ var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
+ new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,
+ queue: {scope:'_draggable', position:'end'}
+ });
+ },
+ endeffect: function(element) {
+ var toOpacity = typeof element._opacity == 'number' ? element._opacity : 1.0;
+ new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,
+ queue: {scope:'_draggable', position:'end'},
+ afterFinish: function(){
+ Draggable._dragging[element] = false
+ }
+ });
+ },
+ zindex: 1000,
+ revert: false,
+ scroll: false,
+ scrollSensitivity: 20,
+ scrollSpeed: 15,
+ snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] }
+ delay: 0
+ };
+
+ if(!arguments[1] || typeof arguments[1].endeffect == 'undefined')
+ Object.extend(defaults, {
+ starteffect: function(element) {
+ element._opacity = Element.getOpacity(element);
+ Draggable._dragging[element] = true;
+ new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
+ }
+ });
+
+ var options = Object.extend(defaults, arguments[1] || {});
+
+ this.element = $(element);
+
+ if(options.handle && (typeof options.handle == 'string'))
+ this.handle = this.element.down('.'+options.handle, 0);
+
+ if(!this.handle) this.handle = $(options.handle);
+ if(!this.handle) this.handle = this.element;
+
+ if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
+ options.scroll = $(options.scroll);
+ this._isScrollChild = Element.childOf(this.element, options.scroll);
+ }
+
+ Element.makePositioned(this.element); // fix IE
+
+ this.delta = this.currentDelta();
+ this.options = options;
+ this.dragging = false;
+
+ this.eventMouseDown = this.initDrag.bindAsEventListener(this);
+ Event.observe(this.handle, "mousedown", this.eventMouseDown);
+
+ Draggables.register(this);
+ },
+
+ destroy: function() {
+ Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
+ Draggables.unregister(this);
+ },
+
+ currentDelta: function() {
+ return([
+ parseInt(Element.getStyle(this.element,'left') || '0'),
+ parseInt(Element.getStyle(this.element,'top') || '0')]);
+ },
+
+ initDrag: function(event) {
+ if(typeof Draggable._dragging[this.element] != 'undefined' &&
+ Draggable._dragging[this.element]) return;
+ if(Event.isLeftClick(event)) {
+ // abort on form elements, fixes a Firefox issue
+ var src = Event.element(event);
+ if((tag_name = src.tagName.toUpperCase()) && (
+ tag_name=='INPUT' ||
+ tag_name=='SELECT' ||
+ tag_name=='OPTION' ||
+ tag_name=='BUTTON' ||
+ tag_name=='TEXTAREA')) return;
+
+ var pointer = [Event.pointerX(event), Event.pointerY(event)];
+ var pos = Position.cumulativeOffset(this.element);
+ this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
+
+ Draggables.activate(this);
+ Event.stop(event);
+ }
+ },
+
+ startDrag: function(event) {
+ this.dragging = true;
+
+ if(this.options.zindex) {
+ this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
+ this.element.style.zIndex = this.options.zindex;
+ }
+
+ if(this.options.ghosting) {
+ this._clone = this.element.cloneNode(true);
+ Position.absolutize(this.element);
+ this.element.parentNode.insertBefore(this._clone, this.element);
+ }
+
+ if(this.options.scroll) {
+ if (this.options.scroll == window) {
+ var where = this._getWindowScroll(this.options.scroll);
+ this.originalScrollLeft = where.left;
+ this.originalScrollTop = where.top;
+ } else {
+ this.originalScrollLeft = this.options.scroll.scrollLeft;
+ this.originalScrollTop = this.options.scroll.scrollTop;
+ }
+ }
+
+ Draggables.notify('onStart', this, event);
+
+ if(this.options.starteffect) this.options.starteffect(this.element);
+ },
+
+ updateDrag: function(event, pointer) {
+ if(!this.dragging) this.startDrag(event);
+ Position.prepare();
+ Droppables.show(pointer, this.element);
+ Draggables.notify('onDrag', this, event);
+
+ this.draw(pointer);
+ if(this.options.change) this.options.change(this);
+
+ if(this.options.scroll) {
+ this.stopScrolling();
+
+ var p;
+ if (this.options.scroll == window) {
+ with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
+ } else {
+ p = Position.page(this.options.scroll);
+ p[0] += this.options.scroll.scrollLeft + Position.deltaX;
+ p[1] += this.options.scroll.scrollTop + Position.deltaY;
+ p.push(p[0]+this.options.scroll.offsetWidth);
+ p.push(p[1]+this.options.scroll.offsetHeight);
+ }
+ var speed = [0,0];
+ if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);
+ if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);
+ if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);
+ if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
+ this.startScrolling(speed);
+ }
+
+ // fix AppleWebKit rendering
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
+
+ Event.stop(event);
+ },
+
+ finishDrag: function(event, success) {
+ this.dragging = false;
+
+ if(this.options.ghosting) {
+ Position.relativize(this.element);
+ Element.remove(this._clone);
+ this._clone = null;
+ }
+
+ if(success) Droppables.fire(event, this.element);
+ Draggables.notify('onEnd', this, event);
+
+ var revert = this.options.revert;
+ if(revert && typeof revert == 'function') revert = revert(this.element);
+
+ var d = this.currentDelta();
+ if(revert && this.options.reverteffect) {
+ this.options.reverteffect(this.element,
+ d[1]-this.delta[1], d[0]-this.delta[0]);
+ } else {
+ this.delta = d;
+ }
+
+ if(this.options.zindex)
+ this.element.style.zIndex = this.originalZ;
+
+ if(this.options.endeffect)
+ this.options.endeffect(this.element);
+
+ Draggables.deactivate(this);
+ Droppables.reset();
+ },
+
+ keyPress: function(event) {
+ if(event.keyCode!=Event.KEY_ESC) return;
+ this.finishDrag(event, false);
+ Event.stop(event);
+ },
+
+ endDrag: function(event) {
+ if(!this.dragging) return;
+ this.stopScrolling();
+ this.finishDrag(event, true);
+ Event.stop(event);
+ },
+
+ draw: function(point) {
+ var pos = Position.cumulativeOffset(this.element);
+ if(this.options.ghosting) {
+ var r = Position.realOffset(this.element);
+ pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
+ }
+
+ var d = this.currentDelta();
+ pos[0] -= d[0]; pos[1] -= d[1];
+
+ if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
+ pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
+ pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
+ }
+
+ var p = [0,1].map(function(i){
+ return (point[i]-pos[i]-this.offset[i])
+ }.bind(this));
+
+ if(this.options.snap) {
+ if(typeof this.options.snap == 'function') {
+ p = this.options.snap(p[0],p[1],this);
+ } else {
+ if(this.options.snap instanceof Array) {
+ p = p.map( function(v, i) {
+ return Math.round(v/this.options.snap[i])*this.options.snap[i] }.bind(this))
+ } else {
+ p = p.map( function(v) {
+ return Math.round(v/this.options.snap)*this.options.snap }.bind(this))
+ }
+ }}
+
+ var style = this.element.style;
+ if((!this.options.constraint) || (this.options.constraint=='horizontal'))
+ style.left = p[0] + "px";
+ if((!this.options.constraint) || (this.options.constraint=='vertical'))
+ style.top = p[1] + "px";
+
+ if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
+ },
+
+ stopScrolling: function() {
+ if(this.scrollInterval) {
+ clearInterval(this.scrollInterval);
+ this.scrollInterval = null;
+ Draggables._lastScrollPointer = null;
+ }
+ },
+
+ startScrolling: function(speed) {
+ if(!(speed[0] || speed[1])) return;
+ this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
+ this.lastScrolled = new Date();
+ this.scrollInterval = setInterval(this.scroll.bind(this), 10);
+ },
+
+ scroll: function() {
+ var current = new Date();
+ var delta = current - this.lastScrolled;
+ this.lastScrolled = current;
+ if(this.options.scroll == window) {
+ with (this._getWindowScroll(this.options.scroll)) {
+ if (this.scrollSpeed[0] || this.scrollSpeed[1]) {
+ var d = delta / 1000;
+ this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] );
+ }
+ }
+ } else {
+ this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;
+ this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000;
+ }
+
+ Position.prepare();
+ Droppables.show(Draggables._lastPointer, this.element);
+ Draggables.notify('onDrag', this);
+ if (this._isScrollChild) {
+ Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
+ Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
+ Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
+ if (Draggables._lastScrollPointer[0] < 0)
+ Draggables._lastScrollPointer[0] = 0;
+ if (Draggables._lastScrollPointer[1] < 0)
+ Draggables._lastScrollPointer[1] = 0;
+ this.draw(Draggables._lastScrollPointer);
+ }
+
+ if(this.options.change) this.options.change(this);
+ },
+
+ _getWindowScroll: function(w) {
+ var T, L, W, H;
+ with (w.document) {
+ if (w.document.documentElement && documentElement.scrollTop) {
+ T = documentElement.scrollTop;
+ L = documentElement.scrollLeft;
+ } else if (w.document.body) {
+ T = body.scrollTop;
+ L = body.scrollLeft;
+ }
+ if (w.innerWidth) {
+ W = w.innerWidth;
+ H = w.innerHeight;
+ } else if (w.document.documentElement && documentElement.clientWidth) {
+ W = documentElement.clientWidth;
+ H = documentElement.clientHeight;
+ } else {
+ W = body.offsetWidth;
+ H = body.offsetHeight
+ }
+ }
+ return { top: T, left: L, width: W, height: H };
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var SortableObserver = Class.create();
+SortableObserver.prototype = {
+ initialize: function(element, observer) {
+ this.element = $(element);
+ this.observer = observer;
+ this.lastValue = Sortable.serialize(this.element);
+ },
+
+ onStart: function() {
+ this.lastValue = Sortable.serialize(this.element);
+ },
+
+ onEnd: function() {
+ Sortable.unmark();
+ if(this.lastValue != Sortable.serialize(this.element))
+ this.observer(this.element)
+ }
+}
+
+var Sortable = {
+ SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
+
+ sortables: {},
+
+ _findRootElement: function(element) {
+ while (element.tagName.toUpperCase() != "BODY") {
+ if(element.id && Sortable.sortables[element.id]) return element;
+ element = element.parentNode;
+ }
+ },
+
+ options: function(element) {
+ element = Sortable._findRootElement($(element));
+ if(!element) return;
+ return Sortable.sortables[element.id];
+ },
+
+ destroy: function(element){
+ var s = Sortable.options(element);
+
+ if(s) {
+ Draggables.removeObserver(s.element);
+ s.droppables.each(function(d){ Droppables.remove(d) });
+ s.draggables.invoke('destroy');
+
+ delete Sortable.sortables[s.element.id];
+ }
+ },
+
+ create: function(element) {
+ element = $(element);
+ var options = Object.extend({
+ element: element,
+ tag: 'li', // assumes li children, override with tag: 'tagname'
+ dropOnEmpty: false,
+ tree: false,
+ treeTag: 'ul',
+ overlap: 'vertical', // one of 'vertical', 'horizontal'
+ constraint: 'vertical', // one of 'vertical', 'horizontal', false
+ containment: element, // also takes array of elements (or id's); or false
+ handle: false, // or a CSS class
+ only: false,
+ delay: 0,
+ hoverclass: null,
+ ghosting: false,
+ scroll: false,
+ scrollSensitivity: 20,
+ scrollSpeed: 15,
+ format: this.SERIALIZE_RULE,
+ onChange: Prototype.emptyFunction,
+ onUpdate: Prototype.emptyFunction
+ }, arguments[1] || {});
+
+ // clear any old sortable with same element
+ this.destroy(element);
+
+ // build options for the draggables
+ var options_for_draggable = {
+ revert: true,
+ scroll: options.scroll,
+ scrollSpeed: options.scrollSpeed,
+ scrollSensitivity: options.scrollSensitivity,
+ delay: options.delay,
+ ghosting: options.ghosting,
+ constraint: options.constraint,
+ handle: options.handle };
+
+ if(options.starteffect)
+ options_for_draggable.starteffect = options.starteffect;
+
+ if(options.reverteffect)
+ options_for_draggable.reverteffect = options.reverteffect;
+ else
+ if(options.ghosting) options_for_draggable.reverteffect = function(element) {
+ element.style.top = 0;
+ element.style.left = 0;
+ };
+
+ if(options.endeffect)
+ options_for_draggable.endeffect = options.endeffect;
+
+ if(options.zindex)
+ options_for_draggable.zindex = options.zindex;
+
+ // build options for the droppables
+ var options_for_droppable = {
+ overlap: options.overlap,
+ containment: options.containment,
+ tree: options.tree,
+ hoverclass: options.hoverclass,
+ onHover: Sortable.onHover
+ }
+
+ var options_for_tree = {
+ onHover: Sortable.onEmptyHover,
+ overlap: options.overlap,
+ containment: options.containment,
+ hoverclass: options.hoverclass
+ }
+
+ // fix for gecko engine
+ Element.cleanWhitespace(element);
+
+ options.draggables = [];
+ options.droppables = [];
+
+ // drop on empty handling
+ if(options.dropOnEmpty || options.tree) {
+ Droppables.add(element, options_for_tree);
+ options.droppables.push(element);
+ }
+
+ (this.findElements(element, options) || []).each( function(e) {
+ // handles are per-draggable
+ var handle = options.handle ?
+ $(e).down('.'+options.handle,0) : e;
+ options.draggables.push(
+ new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
+ Droppables.add(e, options_for_droppable);
+ if(options.tree) e.treeNode = element;
+ options.droppables.push(e);
+ });
+
+ if(options.tree) {
+ (Sortable.findTreeElements(element, options) || []).each( function(e) {
+ Droppables.add(e, options_for_tree);
+ e.treeNode = element;
+ options.droppables.push(e);
+ });
+ }
+
+ // keep reference
+ this.sortables[element.id] = options;
+
+ // for onupdate
+ Draggables.addObserver(new SortableObserver(element, options.onUpdate));
+
+ },
+
+ // return all suitable-for-sortable elements in a guaranteed order
+ findElements: function(element, options) {
+ return Element.findChildren(
+ element, options.only, options.tree ? true : false, options.tag);
+ },
+
+ findTreeElements: function(element, options) {
+ return Element.findChildren(
+ element, options.only, options.tree ? true : false, options.treeTag);
+ },
+
+ onHover: function(element, dropon, overlap) {
+ if(Element.isParent(dropon, element)) return;
+
+ if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {
+ return;
+ } else if(overlap>0.5) {
+ Sortable.mark(dropon, 'before');
+ if(dropon.previousSibling != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, dropon);
+ if(dropon.parentNode!=oldParentNode)
+ Sortable.options(oldParentNode).onChange(element);
+ Sortable.options(dropon.parentNode).onChange(element);
+ }
+ } else {
+ Sortable.mark(dropon, 'after');
+ var nextElement = dropon.nextSibling || null;
+ if(nextElement != element) {
+ var oldParentNode = element.parentNode;
+ element.style.visibility = "hidden"; // fix gecko rendering
+ dropon.parentNode.insertBefore(element, nextElement);
+ if(dropon.parentNode!=oldParentNode)
+ Sortable.options(oldParentNode).onChange(element);
+ Sortable.options(dropon.parentNode).onChange(element);
+ }
+ }
+ },
+
+ onEmptyHover: function(element, dropon, overlap) {
+ var oldParentNode = element.parentNode;
+ var droponOptions = Sortable.options(dropon);
+
+ if(!Element.isParent(dropon, element)) {
+ var index;
+
+ var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});
+ var child = null;
+
+ if(children) {
+ var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);
+
+ for (index = 0; index < children.length; index += 1) {
+ if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {
+ offset -= Element.offsetSize (children[index], droponOptions.overlap);
+ } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {
+ child = index + 1 < children.length ? children[index + 1] : null;
+ break;
+ } else {
+ child = children[index];
+ break;
+ }
+ }
+ }
+
+ dropon.insertBefore(element, child);
+
+ Sortable.options(oldParentNode).onChange(element);
+ droponOptions.onChange(element);
+ }
+ },
+
+ unmark: function() {
+ if(Sortable._marker) Sortable._marker.hide();
+ },
+
+ mark: function(dropon, position) {
+ // mark on ghosting only
+ var sortable = Sortable.options(dropon.parentNode);
+ if(sortable && !sortable.ghosting) return;
+
+ if(!Sortable._marker) {
+ Sortable._marker =
+ ($('dropmarker') || Element.extend(document.createElement('DIV'))).
+ hide().addClassName('dropmarker').setStyle({position:'absolute'});
+ document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
+ }
+ var offsets = Position.cumulativeOffset(dropon);
+ Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});
+
+ if(position=='after')
+ if(sortable.overlap == 'horizontal')
+ Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
+ else
+ Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
+
+ Sortable._marker.show();
+ },
+
+ _tree: function(element, options, parent) {
+ var children = Sortable.findElements(element, options) || [];
+
+ for (var i = 0; i < children.length; ++i) {
+ var match = children[i].id.match(options.format);
+
+ if (!match) continue;
+
+ var child = {
+ id: encodeURIComponent(match ? match[1] : null),
+ element: element,
+ parent: parent,
+ children: [],
+ position: parent.children.length,
+ container: $(children[i]).down(options.treeTag)
+ }
+
+ /* Get the element containing the children and recurse over it */
+ if (child.container)
+ this._tree(child.container, options, child)
+
+ parent.children.push (child);
+ }
+
+ return parent;
+ },
+
+ tree: function(element) {
+ element = $(element);
+ var sortableOptions = this.options(element);
+ var options = Object.extend({
+ tag: sortableOptions.tag,
+ treeTag: sortableOptions.treeTag,
+ only: sortableOptions.only,
+ name: element.id,
+ format: sortableOptions.format
+ }, arguments[1] || {});
+
+ var root = {
+ id: null,
+ parent: null,
+ children: [],
+ container: element,
+ position: 0
+ }
+
+ return Sortable._tree(element, options, root);
+ },
+
+ /* Construct a [i] index for a particular node */
+ _constructIndex: function(node) {
+ var index = '';
+ do {
+ if (node.id) index = '[' + node.position + ']' + index;
+ } while ((node = node.parent) != null);
+ return index;
+ },
+
+ sequence: function(element) {
+ element = $(element);
+ var options = Object.extend(this.options(element), arguments[1] || {});
+
+ return $(this.findElements(element, options) || []).map( function(item) {
+ return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
+ });
+ },
+
+ setSequence: function(element, new_sequence) {
+ element = $(element);
+ var options = Object.extend(this.options(element), arguments[2] || {});
+
+ var nodeMap = {};
+ this.findElements(element, options).each( function(n) {
+ if (n.id.match(options.format))
+ nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];
+ n.parentNode.removeChild(n);
+ });
+
+ new_sequence.each(function(ident) {
+ var n = nodeMap[ident];
+ if (n) {
+ n[1].appendChild(n[0]);
+ delete nodeMap[ident];
+ }
+ });
+ },
+
+ serialize: function(element) {
+ element = $(element);
+ var options = Object.extend(Sortable.options(element), arguments[1] || {});
+ var name = encodeURIComponent(
+ (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
+
+ if (options.tree) {
+ return Sortable.tree(element, arguments[1]).children.map( function (item) {
+ return [name + Sortable._constructIndex(item) + "[id]=" +
+ encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
+ }).flatten().join('&');
+ } else {
+ return Sortable.sequence(element, arguments[1]).map( function(item) {
+ return name + "[]=" + encodeURIComponent(item);
+ }).join('&');
+ }
+ }
+}
+
+// Returns true if child is contained within element
+Element.isParent = function(child, element) {
+ if (!child.parentNode || child == element) return false;
+ if (child.parentNode == element) return true;
+ return Element.isParent(child.parentNode, element);
+}
+
+Element.findChildren = function(element, only, recursive, tagName) {
+ if(!element.hasChildNodes()) return null;
+ tagName = tagName.toUpperCase();
+ if(only) only = [only].flatten();
+ var elements = [];
+ $A(element.childNodes).each( function(e) {
+ if(e.tagName && e.tagName.toUpperCase()==tagName &&
+ (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))
+ elements.push(e);
+ if(recursive) {
+ var grandchildren = Element.findChildren(e, only, recursive, tagName);
+ if(grandchildren) elements.push(grandchildren);
+ }
+ });
+
+ return (elements.length>0 ? elements.flatten() : []);
+}
+
+Element.offsetSize = function (element, type) {
+ return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
+}
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/effects.js b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/effects.js
new file mode 100644
index 00000000..06f59b47
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/effects.js
@@ -0,0 +1,1090 @@
+// script.aculo.us effects.js v1.7.0, Fri Jan 19 19:16:36 CET 2007
+
+// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// Contributors:
+// Justin Palmer (http://encytemedia.com/)
+// Mark Pilgrim (http://diveintomark.org/)
+// Martin Bialasinki
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+// converts rgb() and #xxx to #xxxxxx format,
+// returns self (or first argument) if not convertable
+String.prototype.parseColor = function() {
+ var color = '#';
+ if(this.slice(0,4) == 'rgb(') {
+ var cols = this.slice(4,this.length-1).split(',');
+ var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);
+ } else {
+ if(this.slice(0,1) == '#') {
+ if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();
+ if(this.length==7) color = this.toLowerCase();
+ }
+ }
+ return(color.length==7 ? color : (arguments[0] || this));
+}
+
+/*--------------------------------------------------------------------------*/
+
+Element.collectTextNodes = function(element) {
+ return $A($(element).childNodes).collect( function(node) {
+ return (node.nodeType==3 ? node.nodeValue :
+ (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
+ }).flatten().join('');
+}
+
+Element.collectTextNodesIgnoreClass = function(element, className) {
+ return $A($(element).childNodes).collect( function(node) {
+ return (node.nodeType==3 ? node.nodeValue :
+ ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?
+ Element.collectTextNodesIgnoreClass(node, className) : ''));
+ }).flatten().join('');
+}
+
+Element.setContentZoom = function(element, percent) {
+ element = $(element);
+ element.setStyle({fontSize: (percent/100) + 'em'});
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
+ return element;
+}
+
+Element.getOpacity = function(element){
+ return $(element).getStyle('opacity');
+}
+
+Element.setOpacity = function(element, value){
+ return $(element).setStyle({opacity:value});
+}
+
+Element.getInlineOpacity = function(element){
+ return $(element).style.opacity || '';
+}
+
+Element.forceRerendering = function(element) {
+ try {
+ element = $(element);
+ var n = document.createTextNode(' ');
+ element.appendChild(n);
+ element.removeChild(n);
+ } catch(e) { }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Array.prototype.call = function() {
+ var args = arguments;
+ this.each(function(f){ f.apply(this, args) });
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Effect = {
+ _elementDoesNotExistError: {
+ name: 'ElementDoesNotExistError',
+ message: 'The specified DOM element does not exist, but is required for this effect to operate'
+ },
+ tagifyText: function(element) {
+ if(typeof Builder == 'undefined')
+ throw("Effect.tagifyText requires including script.aculo.us' builder.js library");
+
+ var tagifyStyle = 'position:relative';
+ if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle += ';zoom:1';
+
+ element = $(element);
+ $A(element.childNodes).each( function(child) {
+ if(child.nodeType==3) {
+ child.nodeValue.toArray().each( function(character) {
+ element.insertBefore(
+ Builder.node('span',{style: tagifyStyle},
+ character == ' ' ? String.fromCharCode(160) : character),
+ child);
+ });
+ Element.remove(child);
+ }
+ });
+ },
+ multiple: function(element, effect) {
+ var elements;
+ if(((typeof element == 'object') ||
+ (typeof element == 'function')) &&
+ (element.length))
+ elements = element;
+ else
+ elements = $(element).childNodes;
+
+ var options = Object.extend({
+ speed: 0.1,
+ delay: 0.0
+ }, arguments[2] || {});
+ var masterDelay = options.delay;
+
+ $A(elements).each( function(element, index) {
+ new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
+ });
+ },
+ PAIRS: {
+ 'slide': ['SlideDown','SlideUp'],
+ 'blind': ['BlindDown','BlindUp'],
+ 'appear': ['Appear','Fade']
+ },
+ toggle: function(element, effect) {
+ element = $(element);
+ effect = (effect || 'appear').toLowerCase();
+ var options = Object.extend({
+ queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
+ }, arguments[2] || {});
+ Effect[element.visible() ?
+ Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
+ }
+};
+
+var Effect2 = Effect; // deprecated
+
+/* ------------- transitions ------------- */
+
+Effect.Transitions = {
+ linear: Prototype.K,
+ sinoidal: function(pos) {
+ return (-Math.cos(pos*Math.PI)/2) + 0.5;
+ },
+ reverse: function(pos) {
+ return 1-pos;
+ },
+ flicker: function(pos) {
+ return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
+ },
+ wobble: function(pos) {
+ return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
+ },
+ pulse: function(pos, pulses) {
+ pulses = pulses || 5;
+ return (
+ Math.round((pos % (1/pulses)) * pulses) == 0 ?
+ ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) :
+ 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2))
+ );
+ },
+ none: function(pos) {
+ return 0;
+ },
+ full: function(pos) {
+ return 1;
+ }
+};
+
+/* ------------- core effects ------------- */
+
+Effect.ScopedQueue = Class.create();
+Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {
+ initialize: function() {
+ this.effects = [];
+ this.interval = null;
+ },
+ _each: function(iterator) {
+ this.effects._each(iterator);
+ },
+ add: function(effect) {
+ var timestamp = new Date().getTime();
+
+ var position = (typeof effect.options.queue == 'string') ?
+ effect.options.queue : effect.options.queue.position;
+
+ switch(position) {
+ case 'front':
+ // move unstarted effects after this effect
+ this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
+ e.startOn += effect.finishOn;
+ e.finishOn += effect.finishOn;
+ });
+ break;
+ case 'with-last':
+ timestamp = this.effects.pluck('startOn').max() || timestamp;
+ break;
+ case 'end':
+ // start effect after last queued effect has finished
+ timestamp = this.effects.pluck('finishOn').max() || timestamp;
+ break;
+ }
+
+ effect.startOn += timestamp;
+ effect.finishOn += timestamp;
+
+ if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
+ this.effects.push(effect);
+
+ if(!this.interval)
+ this.interval = setInterval(this.loop.bind(this), 15);
+ },
+ remove: function(effect) {
+ this.effects = this.effects.reject(function(e) { return e==effect });
+ if(this.effects.length == 0) {
+ clearInterval(this.interval);
+ this.interval = null;
+ }
+ },
+ loop: function() {
+ var timePos = new Date().getTime();
+ for(var i=0, len=this.effects.length;i<len;i++)
+ if(this.effects[i]) this.effects[i].loop(timePos);
+ }
+});
+
+Effect.Queues = {
+ instances: $H(),
+ get: function(queueName) {
+ if(typeof queueName != 'string') return queueName;
+
+ if(!this.instances[queueName])
+ this.instances[queueName] = new Effect.ScopedQueue();
+
+ return this.instances[queueName];
+ }
+}
+Effect.Queue = Effect.Queues.get('global');
+
+Effect.DefaultOptions = {
+ transition: Effect.Transitions.sinoidal,
+ duration: 1.0, // seconds
+ fps: 60.0, // max. 60fps due to Effect.Queue implementation
+ sync: false, // true for combining
+ from: 0.0,
+ to: 1.0,
+ delay: 0.0,
+ queue: 'parallel'
+}
+
+Effect.Base = function() {};
+Effect.Base.prototype = {
+ position: null,
+ start: function(options) {
+ this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});
+ this.currentFrame = 0;
+ this.state = 'idle';
+ this.startOn = this.options.delay*1000;
+ this.finishOn = this.startOn + (this.options.duration*1000);
+ this.event('beforeStart');
+ if(!this.options.sync)
+ Effect.Queues.get(typeof this.options.queue == 'string' ?
+ 'global' : this.options.queue.scope).add(this);
+ },
+ loop: function(timePos) {
+ if(timePos >= this.startOn) {
+ if(timePos >= this.finishOn) {
+ this.render(1.0);
+ this.cancel();
+ this.event('beforeFinish');
+ if(this.finish) this.finish();
+ this.event('afterFinish');
+ return;
+ }
+ var pos = (timePos - this.startOn) / (this.finishOn - this.startOn);
+ var frame = Math.round(pos * this.options.fps * this.options.duration);
+ if(frame > this.currentFrame) {
+ this.render(pos);
+ this.currentFrame = frame;
+ }
+ }
+ },
+ render: function(pos) {
+ if(this.state == 'idle') {
+ this.state = 'running';
+ this.event('beforeSetup');
+ if(this.setup) this.setup();
+ this.event('afterSetup');
+ }
+ if(this.state == 'running') {
+ if(this.options.transition) pos = this.options.transition(pos);
+ pos *= (this.options.to-this.options.from);
+ pos += this.options.from;
+ this.position = pos;
+ this.event('beforeUpdate');
+ if(this.update) this.update(pos);
+ this.event('afterUpdate');
+ }
+ },
+ cancel: function() {
+ if(!this.options.sync)
+ Effect.Queues.get(typeof this.options.queue == 'string' ?
+ 'global' : this.options.queue.scope).remove(this);
+ this.state = 'finished';
+ },
+ event: function(eventName) {
+ if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
+ if(this.options[eventName]) this.options[eventName](this);
+ },
+ inspect: function() {
+ var data = $H();
+ for(property in this)
+ if(typeof this[property] != 'function') data[property] = this[property];
+ return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
+ }
+}
+
+Effect.Parallel = Class.create();
+Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
+ initialize: function(effects) {
+ this.effects = effects || [];
+ this.start(arguments[1]);
+ },
+ update: function(position) {
+ this.effects.invoke('render', position);
+ },
+ finish: function(position) {
+ this.effects.each( function(effect) {
+ effect.render(1.0);
+ effect.cancel();
+ effect.event('beforeFinish');
+ if(effect.finish) effect.finish(position);
+ effect.event('afterFinish');
+ });
+ }
+});
+
+Effect.Event = Class.create();
+Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), {
+ initialize: function() {
+ var options = Object.extend({
+ duration: 0
+ }, arguments[0] || {});
+ this.start(options);
+ },
+ update: Prototype.emptyFunction
+});
+
+Effect.Opacity = Class.create();
+Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
+ initialize: function(element) {
+ this.element = $(element);
+ if(!this.element) throw(Effect._elementDoesNotExistError);
+ // make this work on IE on elements without 'layout'
+ if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout))
+ this.element.setStyle({zoom: 1});
+ var options = Object.extend({
+ from: this.element.getOpacity() || 0.0,
+ to: 1.0
+ }, arguments[1] || {});
+ this.start(options);
+ },
+ update: function(position) {
+ this.element.setOpacity(position);
+ }
+});
+
+Effect.Move = Class.create();
+Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {
+ initialize: function(element) {
+ this.element = $(element);
+ if(!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({
+ x: 0,
+ y: 0,
+ mode: 'relative'
+ }, arguments[1] || {});
+ this.start(options);
+ },
+ setup: function() {
+ // Bug in Opera: Opera returns the "real" position of a static element or
+ // relative element that does not have top/left explicitly set.
+ // ==> Always set top and left for position relative elements in your stylesheets
+ // (to 0 if you do not need them)
+ this.element.makePositioned();
+ this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
+ this.originalTop = parseFloat(this.element.getStyle('top') || '0');
+ if(this.options.mode == 'absolute') {
+ // absolute movement, so we need to calc deltaX and deltaY
+ this.options.x = this.options.x - this.originalLeft;
+ this.options.y = this.options.y - this.originalTop;
+ }
+ },
+ update: function(position) {
+ this.element.setStyle({
+ left: Math.round(this.options.x * position + this.originalLeft) + 'px',
+ top: Math.round(this.options.y * position + this.originalTop) + 'px'
+ });
+ }
+});
+
+// for backwards compatibility
+Effect.MoveBy = function(element, toTop, toLeft) {
+ return new Effect.Move(element,
+ Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));
+};
+
+Effect.Scale = Class.create();
+Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
+ initialize: function(element, percent) {
+ this.element = $(element);
+ if(!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({
+ scaleX: true,
+ scaleY: true,
+ scaleContent: true,
+ scaleFromCenter: false,
+ scaleMode: 'box', // 'box' or 'contents' or {} with provided values
+ scaleFrom: 100.0,
+ scaleTo: percent
+ }, arguments[2] || {});
+ this.start(options);
+ },
+ setup: function() {
+ this.restoreAfterFinish = this.options.restoreAfterFinish || false;
+ this.elementPositioning = this.element.getStyle('position');
+
+ this.originalStyle = {};
+ ['top','left','width','height','fontSize'].each( function(k) {
+ this.originalStyle[k] = this.element.style[k];
+ }.bind(this));
+
+ this.originalTop = this.element.offsetTop;
+ this.originalLeft = this.element.offsetLeft;
+
+ var fontSize = this.element.getStyle('font-size') || '100%';
+ ['em','px','%','pt'].each( function(fontSizeType) {
+ if(fontSize.indexOf(fontSizeType)>0) {
+ this.fontSize = parseFloat(fontSize);
+ this.fontSizeType = fontSizeType;
+ }
+ }.bind(this));
+
+ this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
+
+ this.dims = null;
+ if(this.options.scaleMode=='box')
+ this.dims = [this.element.offsetHeight, this.element.offsetWidth];
+ if(/^content/.test(this.options.scaleMode))
+ this.dims = [this.element.scrollHeight, this.element.scrollWidth];
+ if(!this.dims)
+ this.dims = [this.options.scaleMode.originalHeight,
+ this.options.scaleMode.originalWidth];
+ },
+ update: function(position) {
+ var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
+ if(this.options.scaleContent && this.fontSize)
+ this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
+ this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
+ },
+ finish: function(position) {
+ if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
+ },
+ setDimensions: function(height, width) {
+ var d = {};
+ if(this.options.scaleX) d.width = Math.round(width) + 'px';
+ if(this.options.scaleY) d.height = Math.round(height) + 'px';
+ if(this.options.scaleFromCenter) {
+ var topd = (height - this.dims[0])/2;
+ var leftd = (width - this.dims[1])/2;
+ if(this.elementPositioning == 'absolute') {
+ if(this.options.scaleY) d.top = this.originalTop-topd + 'px';
+ if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
+ } else {
+ if(this.options.scaleY) d.top = -topd + 'px';
+ if(this.options.scaleX) d.left = -leftd + 'px';
+ }
+ }
+ this.element.setStyle(d);
+ }
+});
+
+Effect.Highlight = Class.create();
+Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
+ initialize: function(element) {
+ this.element = $(element);
+ if(!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {});
+ this.start(options);
+ },
+ setup: function() {
+ // Prevent executing on elements not in the layout flow
+ if(this.element.getStyle('display')=='none') { this.cancel(); return; }
+ // Disable background image during the effect
+ this.oldStyle = {};
+ if (!this.options.keepBackgroundImage) {
+ this.oldStyle.backgroundImage = this.element.getStyle('background-image');
+ this.element.setStyle({backgroundImage: 'none'});
+ }
+ if(!this.options.endcolor)
+ this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
+ if(!this.options.restorecolor)
+ this.options.restorecolor = this.element.getStyle('background-color');
+ // init color calculations
+ this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
+ this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
+ },
+ update: function(position) {
+ this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
+ return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });
+ },
+ finish: function() {
+ this.element.setStyle(Object.extend(this.oldStyle, {
+ backgroundColor: this.options.restorecolor
+ }));
+ }
+});
+
+Effect.ScrollTo = Class.create();
+Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
+ initialize: function(element) {
+ this.element = $(element);
+ this.start(arguments[1] || {});
+ },
+ setup: function() {
+ Position.prepare();
+ var offsets = Position.cumulativeOffset(this.element);
+ if(this.options.offset) offsets[1] += this.options.offset;
+ var max = window.innerHeight ?
+ window.height - window.innerHeight :
+ document.body.scrollHeight -
+ (document.documentElement.clientHeight ?
+ document.documentElement.clientHeight : document.body.clientHeight);
+ this.scrollStart = Position.deltaY;
+ this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
+ },
+ update: function(position) {
+ Position.prepare();
+ window.scrollTo(Position.deltaX,
+ this.scrollStart + (position*this.delta));
+ }
+});
+
+/* ------------- combination effects ------------- */
+
+Effect.Fade = function(element) {
+ element = $(element);
+ var oldOpacity = element.getInlineOpacity();
+ var options = Object.extend({
+ from: element.getOpacity() || 1.0,
+ to: 0.0,
+ afterFinishInternal: function(effect) {
+ if(effect.options.to!=0) return;
+ effect.element.hide().setStyle({opacity: oldOpacity});
+ }}, arguments[1] || {});
+ return new Effect.Opacity(element,options);
+}
+
+Effect.Appear = function(element) {
+ element = $(element);
+ var options = Object.extend({
+ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
+ to: 1.0,
+ // force Safari to render floated elements properly
+ afterFinishInternal: function(effect) {
+ effect.element.forceRerendering();
+ },
+ beforeSetup: function(effect) {
+ effect.element.setOpacity(effect.options.from).show();
+ }}, arguments[1] || {});
+ return new Effect.Opacity(element,options);
+}
+
+Effect.Puff = function(element) {
+ element = $(element);
+ var oldStyle = {
+ opacity: element.getInlineOpacity(),
+ position: element.getStyle('position'),
+ top: element.style.top,
+ left: element.style.left,
+ width: element.style.width,
+ height: element.style.height
+ };
+ return new Effect.Parallel(
+ [ new Effect.Scale(element, 200,
+ { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],
+ Object.extend({ duration: 1.0,
+ beforeSetupInternal: function(effect) {
+ Position.absolutize(effect.effects[0].element)
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.hide().setStyle(oldStyle); }
+ }, arguments[1] || {})
+ );
+}
+
+Effect.BlindUp = function(element) {
+ element = $(element);
+ element.makeClipping();
+ return new Effect.Scale(element, 0,
+ Object.extend({ scaleContent: false,
+ scaleX: false,
+ restoreAfterFinish: true,
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping();
+ }
+ }, arguments[1] || {})
+ );
+}
+
+Effect.BlindDown = function(element) {
+ element = $(element);
+ var elementDimensions = element.getDimensions();
+ return new Effect.Scale(element, 100, Object.extend({
+ scaleContent: false,
+ scaleX: false,
+ scaleFrom: 0,
+ scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+ restoreAfterFinish: true,
+ afterSetup: function(effect) {
+ effect.element.makeClipping().setStyle({height: '0px'}).show();
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.undoClipping();
+ }
+ }, arguments[1] || {}));
+}
+
+Effect.SwitchOff = function(element) {
+ element = $(element);
+ var oldOpacity = element.getInlineOpacity();
+ return new Effect.Appear(element, Object.extend({
+ duration: 0.4,
+ from: 0,
+ transition: Effect.Transitions.flicker,
+ afterFinishInternal: function(effect) {
+ new Effect.Scale(effect.element, 1, {
+ duration: 0.3, scaleFromCenter: true,
+ scaleX: false, scaleContent: false, restoreAfterFinish: true,
+ beforeSetup: function(effect) {
+ effect.element.makePositioned().makeClipping();
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
+ }
+ })
+ }
+ }, arguments[1] || {}));
+}
+
+Effect.DropOut = function(element) {
+ element = $(element);
+ var oldStyle = {
+ top: element.getStyle('top'),
+ left: element.getStyle('left'),
+ opacity: element.getInlineOpacity() };
+ return new Effect.Parallel(
+ [ new Effect.Move(element, {x: 0, y: 100, sync: true }),
+ new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
+ Object.extend(
+ { duration: 0.5,
+ beforeSetup: function(effect) {
+ effect.effects[0].element.makePositioned();
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
+ }
+ }, arguments[1] || {}));
+}
+
+Effect.Shake = function(element) {
+ element = $(element);
+ var oldStyle = {
+ top: element.getStyle('top'),
+ left: element.getStyle('left') };
+ return new Effect.Move(element,
+ { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) {
+ new Effect.Move(effect.element,
+ { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
+ effect.element.undoPositioned().setStyle(oldStyle);
+ }}) }}) }}) }}) }}) }});
+}
+
+Effect.SlideDown = function(element) {
+ element = $(element).cleanWhitespace();
+ // SlideDown need to have the content of the element wrapped in a container element with fixed height!
+ var oldInnerBottom = element.down().getStyle('bottom');
+ var elementDimensions = element.getDimensions();
+ return new Effect.Scale(element, 100, Object.extend({
+ scaleContent: false,
+ scaleX: false,
+ scaleFrom: window.opera ? 0 : 1,
+ scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+ restoreAfterFinish: true,
+ afterSetup: function(effect) {
+ effect.element.makePositioned();
+ effect.element.down().makePositioned();
+ if(window.opera) effect.element.setStyle({top: ''});
+ effect.element.makeClipping().setStyle({height: '0px'}).show();
+ },
+ afterUpdateInternal: function(effect) {
+ effect.element.down().setStyle({bottom:
+ (effect.dims[0] - effect.element.clientHeight) + 'px' });
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.undoClipping().undoPositioned();
+ effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
+ }, arguments[1] || {})
+ );
+}
+
+Effect.SlideUp = function(element) {
+ element = $(element).cleanWhitespace();
+ var oldInnerBottom = element.down().getStyle('bottom');
+ return new Effect.Scale(element, window.opera ? 0 : 1,
+ Object.extend({ scaleContent: false,
+ scaleX: false,
+ scaleMode: 'box',
+ scaleFrom: 100,
+ restoreAfterFinish: true,
+ beforeStartInternal: function(effect) {
+ effect.element.makePositioned();
+ effect.element.down().makePositioned();
+ if(window.opera) effect.element.setStyle({top: ''});
+ effect.element.makeClipping().show();
+ },
+ afterUpdateInternal: function(effect) {
+ effect.element.down().setStyle({bottom:
+ (effect.dims[0] - effect.element.clientHeight) + 'px' });
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom});
+ effect.element.down().undoPositioned();
+ }
+ }, arguments[1] || {})
+ );
+}
+
+// Bug in opera makes the TD containing this element expand for a instance after finish
+Effect.Squish = function(element) {
+ return new Effect.Scale(element, window.opera ? 1 : 0, {
+ restoreAfterFinish: true,
+ beforeSetup: function(effect) {
+ effect.element.makeClipping();
+ },
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping();
+ }
+ });
+}
+
+Effect.Grow = function(element) {
+ element = $(element);
+ var options = Object.extend({
+ direction: 'center',
+ moveTransition: Effect.Transitions.sinoidal,
+ scaleTransition: Effect.Transitions.sinoidal,
+ opacityTransition: Effect.Transitions.full
+ }, arguments[1] || {});
+ var oldStyle = {
+ top: element.style.top,
+ left: element.style.left,
+ height: element.style.height,
+ width: element.style.width,
+ opacity: element.getInlineOpacity() };
+
+ var dims = element.getDimensions();
+ var initialMoveX, initialMoveY;
+ var moveX, moveY;
+
+ switch (options.direction) {
+ case 'top-left':
+ initialMoveX = initialMoveY = moveX = moveY = 0;
+ break;
+ case 'top-right':
+ initialMoveX = dims.width;
+ initialMoveY = moveY = 0;
+ moveX = -dims.width;
+ break;
+ case 'bottom-left':
+ initialMoveX = moveX = 0;
+ initialMoveY = dims.height;
+ moveY = -dims.height;
+ break;
+ case 'bottom-right':
+ initialMoveX = dims.width;
+ initialMoveY = dims.height;
+ moveX = -dims.width;
+ moveY = -dims.height;
+ break;
+ case 'center':
+ initialMoveX = dims.width / 2;
+ initialMoveY = dims.height / 2;
+ moveX = -dims.width / 2;
+ moveY = -dims.height / 2;
+ break;
+ }
+
+ return new Effect.Move(element, {
+ x: initialMoveX,
+ y: initialMoveY,
+ duration: 0.01,
+ beforeSetup: function(effect) {
+ effect.element.hide().makeClipping().makePositioned();
+ },
+ afterFinishInternal: function(effect) {
+ new Effect.Parallel(
+ [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
+ new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
+ new Effect.Scale(effect.element, 100, {
+ scaleMode: { originalHeight: dims.height, originalWidth: dims.width },
+ sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
+ ], Object.extend({
+ beforeSetup: function(effect) {
+ effect.effects[0].element.setStyle({height: '0px'}).show();
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);
+ }
+ }, options)
+ )
+ }
+ });
+}
+
+Effect.Shrink = function(element) {
+ element = $(element);
+ var options = Object.extend({
+ direction: 'center',
+ moveTransition: Effect.Transitions.sinoidal,
+ scaleTransition: Effect.Transitions.sinoidal,
+ opacityTransition: Effect.Transitions.none
+ }, arguments[1] || {});
+ var oldStyle = {
+ top: element.style.top,
+ left: element.style.left,
+ height: element.style.height,
+ width: element.style.width,
+ opacity: element.getInlineOpacity() };
+
+ var dims = element.getDimensions();
+ var moveX, moveY;
+
+ switch (options.direction) {
+ case 'top-left':
+ moveX = moveY = 0;
+ break;
+ case 'top-right':
+ moveX = dims.width;
+ moveY = 0;
+ break;
+ case 'bottom-left':
+ moveX = 0;
+ moveY = dims.height;
+ break;
+ case 'bottom-right':
+ moveX = dims.width;
+ moveY = dims.height;
+ break;
+ case 'center':
+ moveX = dims.width / 2;
+ moveY = dims.height / 2;
+ break;
+ }
+
+ return new Effect.Parallel(
+ [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
+ new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
+ new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
+ ], Object.extend({
+ beforeStartInternal: function(effect) {
+ effect.effects[0].element.makePositioned().makeClipping();
+ },
+ afterFinishInternal: function(effect) {
+ effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
+ }, options)
+ );
+}
+
+Effect.Pulsate = function(element) {
+ element = $(element);
+ var options = arguments[1] || {};
+ var oldOpacity = element.getInlineOpacity();
+ var transition = options.transition || Effect.Transitions.sinoidal;
+ var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
+ reverser.bind(transition);
+ return new Effect.Opacity(element,
+ Object.extend(Object.extend({ duration: 2.0, from: 0,
+ afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
+ }, options), {transition: reverser}));
+}
+
+Effect.Fold = function(element) {
+ element = $(element);
+ var oldStyle = {
+ top: element.style.top,
+ left: element.style.left,
+ width: element.style.width,
+ height: element.style.height };
+ element.makeClipping();
+ return new Effect.Scale(element, 5, Object.extend({
+ scaleContent: false,
+ scaleX: false,
+ afterFinishInternal: function(effect) {
+ new Effect.Scale(element, 1, {
+ scaleContent: false,
+ scaleY: false,
+ afterFinishInternal: function(effect) {
+ effect.element.hide().undoClipping().setStyle(oldStyle);
+ } });
+ }}, arguments[1] || {}));
+};
+
+Effect.Morph = Class.create();
+Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), {
+ initialize: function(element) {
+ this.element = $(element);
+ if(!this.element) throw(Effect._elementDoesNotExistError);
+ var options = Object.extend({
+ style: {}
+ }, arguments[1] || {});
+ if (typeof options.style == 'string') {
+ if(options.style.indexOf(':') == -1) {
+ var cssText = '', selector = '.' + options.style;
+ $A(document.styleSheets).reverse().each(function(styleSheet) {
+ if (styleSheet.cssRules) cssRules = styleSheet.cssRules;
+ else if (styleSheet.rules) cssRules = styleSheet.rules;
+ $A(cssRules).reverse().each(function(rule) {
+ if (selector == rule.selectorText) {
+ cssText = rule.style.cssText;
+ throw $break;
+ }
+ });
+ if (cssText) throw $break;
+ });
+ this.style = cssText.parseStyle();
+ options.afterFinishInternal = function(effect){
+ effect.element.addClassName(effect.options.style);
+ effect.transforms.each(function(transform) {
+ if(transform.style != 'opacity')
+ effect.element.style[transform.style.camelize()] = '';
+ });
+ }
+ } else this.style = options.style.parseStyle();
+ } else this.style = $H(options.style)
+ this.start(options);
+ },
+ setup: function(){
+ function parseColor(color){
+ if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
+ color = color.parseColor();
+ return $R(0,2).map(function(i){
+ return parseInt( color.slice(i*2+1,i*2+3), 16 )
+ });
+ }
+ this.transforms = this.style.map(function(pair){
+ var property = pair[0].underscore().dasherize(), value = pair[1], unit = null;
+
+ if(value.parseColor('#zzzzzz') != '#zzzzzz') {
+ value = value.parseColor();
+ unit = 'color';
+ } else if(property == 'opacity') {
+ value = parseFloat(value);
+ if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout))
+ this.element.setStyle({zoom: 1});
+ } else if(Element.CSS_LENGTH.test(value))
+ var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/),
+ value = parseFloat(components[1]), unit = (components.length == 3) ? components[2] : null;
+
+ var originalValue = this.element.getStyle(property);
+ return $H({
+ style: property,
+ originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),
+ targetValue: unit=='color' ? parseColor(value) : value,
+ unit: unit
+ });
+ }.bind(this)).reject(function(transform){
+ return (
+ (transform.originalValue == transform.targetValue) ||
+ (
+ transform.unit != 'color' &&
+ (isNaN(transform.originalValue) || isNaN(transform.targetValue))
+ )
+ )
+ });
+ },
+ update: function(position) {
+ var style = $H(), value = null;
+ this.transforms.each(function(transform){
+ value = transform.unit=='color' ?
+ $R(0,2).inject('#',function(m,v,i){
+ return m+(Math.round(transform.originalValue[i]+
+ (transform.targetValue[i] - transform.originalValue[i])*position)).toColorPart() }) :
+ transform.originalValue + Math.round(
+ ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit;
+ style[transform.style] = value;
+ });
+ this.element.setStyle(style);
+ }
+});
+
+Effect.Transform = Class.create();
+Object.extend(Effect.Transform.prototype, {
+ initialize: function(tracks){
+ this.tracks = [];
+ this.options = arguments[1] || {};
+ this.addTracks(tracks);
+ },
+ addTracks: function(tracks){
+ tracks.each(function(track){
+ var data = $H(track).values().first();
+ this.tracks.push($H({
+ ids: $H(track).keys().first(),
+ effect: Effect.Morph,
+ options: { style: data }
+ }));
+ }.bind(this));
+ return this;
+ },
+ play: function(){
+ return new Effect.Parallel(
+ this.tracks.map(function(track){
+ var elements = [$(track.ids) || $$(track.ids)].flatten();
+ return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) });
+ }).flatten(),
+ this.options
+ );
+ }
+});
+
+Element.CSS_PROPERTIES = $w(
+ 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +
+ 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
+ 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
+ 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
+ 'fontSize fontWeight height left letterSpacing lineHeight ' +
+ 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
+ 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
+ 'right textIndent top width wordSpacing zIndex');
+
+Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
+
+String.prototype.parseStyle = function(){
+ var element = Element.extend(document.createElement('div'));
+ element.innerHTML = '<div style="' + this + '"></div>';
+ var style = element.down().style, styleRules = $H();
+
+ Element.CSS_PROPERTIES.each(function(property){
+ if(style[property]) styleRules[property] = style[property];
+ });
+ if(/MSIE/.test(navigator.userAgent) && !window.opera && this.indexOf('opacity') > -1) {
+ styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1];
+ }
+ return styleRules;
+};
+
+Element.morph = function(element, style) {
+ new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {}));
+ return element;
+};
+
+['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom',
+ 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each(
+ function(f) { Element.Methods[f] = Element[f]; }
+);
+
+Element.Methods.visualEffect = function(element, effect, options) {
+ s = effect.gsub(/_/, '-').camelize();
+ effect_class = s.charAt(0).toUpperCase() + s.substring(1);
+ new Effect[effect_class](element, options);
+ return $(element);
+};
+
+Element.addMethods(); \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/prototype.js b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/prototype.js
new file mode 100644
index 00000000..14c5dc41
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/prototype.js
@@ -0,0 +1,2515 @@
+/* Prototype JavaScript framework, version 1.5.0
+ * (c) 2005-2007 Sam Stephenson
+ *
+ * Prototype is freely distributable under the terms of an MIT-style license.
+ * For details, see the Prototype web site: http://prototype.conio.net/
+ *
+/*--------------------------------------------------------------------------*/
+
+var Prototype = {
+ Version: '1.5.0',
+ BrowserFeatures: {
+ XPath: !!document.evaluate
+ },
+
+ ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
+ emptyFunction: function() {},
+ K: function(x) { return x }
+}
+
+var Class = {
+ create: function() {
+ return function() {
+ this.initialize.apply(this, arguments);
+ }
+ }
+}
+
+var Abstract = new Object();
+
+Object.extend = function(destination, source) {
+ for (var property in source) {
+ destination[property] = source[property];
+ }
+ return destination;
+}
+
+Object.extend(Object, {
+ inspect: function(object) {
+ try {
+ if (object === undefined) return 'undefined';
+ if (object === null) return 'null';
+ return object.inspect ? object.inspect() : object.toString();
+ } catch (e) {
+ if (e instanceof RangeError) return '...';
+ throw e;
+ }
+ },
+
+ keys: function(object) {
+ var keys = [];
+ for (var property in object)
+ keys.push(property);
+ return keys;
+ },
+
+ values: function(object) {
+ var values = [];
+ for (var property in object)
+ values.push(object[property]);
+ return values;
+ },
+
+ clone: function(object) {
+ return Object.extend({}, object);
+ }
+});
+
+Function.prototype.bind = function() {
+ var __method = this, args = $A(arguments), object = args.shift();
+ return function() {
+ return __method.apply(object, args.concat($A(arguments)));
+ }
+}
+
+Function.prototype.bindAsEventListener = function(object) {
+ var __method = this, args = $A(arguments), object = args.shift();
+ return function(event) {
+ return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
+ }
+}
+
+Object.extend(Number.prototype, {
+ toColorPart: function() {
+ var digits = this.toString(16);
+ if (this < 16) return '0' + digits;
+ return digits;
+ },
+
+ succ: function() {
+ return this + 1;
+ },
+
+ times: function(iterator) {
+ $R(0, this, true).each(iterator);
+ return this;
+ }
+});
+
+var Try = {
+ these: function() {
+ var returnValue;
+
+ for (var i = 0, length = arguments.length; i < length; i++) {
+ var lambda = arguments[i];
+ try {
+ returnValue = lambda();
+ break;
+ } catch (e) {}
+ }
+
+ return returnValue;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var PeriodicalExecuter = Class.create();
+PeriodicalExecuter.prototype = {
+ initialize: function(callback, frequency) {
+ this.callback = callback;
+ this.frequency = frequency;
+ this.currentlyExecuting = false;
+
+ this.registerCallback();
+ },
+
+ registerCallback: function() {
+ this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+ },
+
+ stop: function() {
+ if (!this.timer) return;
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+
+ onTimerEvent: function() {
+ if (!this.currentlyExecuting) {
+ try {
+ this.currentlyExecuting = true;
+ this.callback(this);
+ } finally {
+ this.currentlyExecuting = false;
+ }
+ }
+ }
+}
+String.interpret = function(value){
+ return value == null ? '' : String(value);
+}
+
+Object.extend(String.prototype, {
+ gsub: function(pattern, replacement) {
+ var result = '', source = this, match;
+ replacement = arguments.callee.prepareReplacement(replacement);
+
+ while (source.length > 0) {
+ if (match = source.match(pattern)) {
+ result += source.slice(0, match.index);
+ result += String.interpret(replacement(match));
+ source = source.slice(match.index + match[0].length);
+ } else {
+ result += source, source = '';
+ }
+ }
+ return result;
+ },
+
+ sub: function(pattern, replacement, count) {
+ replacement = this.gsub.prepareReplacement(replacement);
+ count = count === undefined ? 1 : count;
+
+ return this.gsub(pattern, function(match) {
+ if (--count < 0) return match[0];
+ return replacement(match);
+ });
+ },
+
+ scan: function(pattern, iterator) {
+ this.gsub(pattern, iterator);
+ return this;
+ },
+
+ truncate: function(length, truncation) {
+ length = length || 30;
+ truncation = truncation === undefined ? '...' : truncation;
+ return this.length > length ?
+ this.slice(0, length - truncation.length) + truncation : this;
+ },
+
+ strip: function() {
+ return this.replace(/^\s+/, '').replace(/\s+$/, '');
+ },
+
+ stripTags: function() {
+ return this.replace(/<\/?[^>]+>/gi, '');
+ },
+
+ stripScripts: function() {
+ return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
+ },
+
+ extractScripts: function() {
+ var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
+ var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
+ return (this.match(matchAll) || []).map(function(scriptTag) {
+ return (scriptTag.match(matchOne) || ['', ''])[1];
+ });
+ },
+
+ evalScripts: function() {
+ return this.extractScripts().map(function(script) { return eval(script) });
+ },
+
+ escapeHTML: function() {
+ var div = document.createElement('div');
+ var text = document.createTextNode(this);
+ div.appendChild(text);
+ return div.innerHTML;
+ },
+
+ unescapeHTML: function() {
+ var div = document.createElement('div');
+ div.innerHTML = this.stripTags();
+ return div.childNodes[0] ? (div.childNodes.length > 1 ?
+ $A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) :
+ div.childNodes[0].nodeValue) : '';
+ },
+
+ toQueryParams: function(separator) {
+ var match = this.strip().match(/([^?#]*)(#.*)?$/);
+ if (!match) return {};
+
+ return match[1].split(separator || '&').inject({}, function(hash, pair) {
+ if ((pair = pair.split('='))[0]) {
+ var name = decodeURIComponent(pair[0]);
+ var value = pair[1] ? decodeURIComponent(pair[1]) : undefined;
+
+ if (hash[name] !== undefined) {
+ if (hash[name].constructor != Array)
+ hash[name] = [hash[name]];
+ if (value) hash[name].push(value);
+ }
+ else hash[name] = value;
+ }
+ return hash;
+ });
+ },
+
+ toArray: function() {
+ return this.split('');
+ },
+
+ succ: function() {
+ return this.slice(0, this.length - 1) +
+ String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
+ },
+
+ camelize: function() {
+ var parts = this.split('-'), len = parts.length;
+ if (len == 1) return parts[0];
+
+ var camelized = this.charAt(0) == '-'
+ ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
+ : parts[0];
+
+ for (var i = 1; i < len; i++)
+ camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
+
+ return camelized;
+ },
+
+ capitalize: function(){
+ return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
+ },
+
+ underscore: function() {
+ return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
+ },
+
+ dasherize: function() {
+ return this.gsub(/_/,'-');
+ },
+
+ inspect: function(useDoubleQuotes) {
+ var escapedString = this.replace(/\\/g, '\\\\');
+ if (useDoubleQuotes)
+ return '"' + escapedString.replace(/"/g, '\\"') + '"';
+ else
+ return "'" + escapedString.replace(/'/g, '\\\'') + "'";
+ }
+});
+
+String.prototype.gsub.prepareReplacement = function(replacement) {
+ if (typeof replacement == 'function') return replacement;
+ var template = new Template(replacement);
+ return function(match) { return template.evaluate(match) };
+}
+
+String.prototype.parseQuery = String.prototype.toQueryParams;
+
+var Template = Class.create();
+Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
+Template.prototype = {
+ initialize: function(template, pattern) {
+ this.template = template.toString();
+ this.pattern = pattern || Template.Pattern;
+ },
+
+ evaluate: function(object) {
+ return this.template.gsub(this.pattern, function(match) {
+ var before = match[1];
+ if (before == '\\') return match[2];
+ return before + String.interpret(object[match[3]]);
+ });
+ }
+}
+
+var $break = new Object();
+var $continue = new Object();
+
+var Enumerable = {
+ each: function(iterator) {
+ var index = 0;
+ try {
+ this._each(function(value) {
+ try {
+ iterator(value, index++);
+ } catch (e) {
+ if (e != $continue) throw e;
+ }
+ });
+ } catch (e) {
+ if (e != $break) throw e;
+ }
+ return this;
+ },
+
+ eachSlice: function(number, iterator) {
+ var index = -number, slices = [], array = this.toArray();
+ while ((index += number) < array.length)
+ slices.push(array.slice(index, index+number));
+ return slices.map(iterator);
+ },
+
+ all: function(iterator) {
+ var result = true;
+ this.each(function(value, index) {
+ result = result && !!(iterator || Prototype.K)(value, index);
+ if (!result) throw $break;
+ });
+ return result;
+ },
+
+ any: function(iterator) {
+ var result = false;
+ this.each(function(value, index) {
+ if (result = !!(iterator || Prototype.K)(value, index))
+ throw $break;
+ });
+ return result;
+ },
+
+ collect: function(iterator) {
+ var results = [];
+ this.each(function(value, index) {
+ results.push((iterator || Prototype.K)(value, index));
+ });
+ return results;
+ },
+
+ detect: function(iterator) {
+ var result;
+ this.each(function(value, index) {
+ if (iterator(value, index)) {
+ result = value;
+ throw $break;
+ }
+ });
+ return result;
+ },
+
+ findAll: function(iterator) {
+ var results = [];
+ this.each(function(value, index) {
+ if (iterator(value, index))
+ results.push(value);
+ });
+ return results;
+ },
+
+ grep: function(pattern, iterator) {
+ var results = [];
+ this.each(function(value, index) {
+ var stringValue = value.toString();
+ if (stringValue.match(pattern))
+ results.push((iterator || Prototype.K)(value, index));
+ })
+ return results;
+ },
+
+ include: function(object) {
+ var found = false;
+ this.each(function(value) {
+ if (value == object) {
+ found = true;
+ throw $break;
+ }
+ });
+ return found;
+ },
+
+ inGroupsOf: function(number, fillWith) {
+ fillWith = fillWith === undefined ? null : fillWith;
+ return this.eachSlice(number, function(slice) {
+ while(slice.length < number) slice.push(fillWith);
+ return slice;
+ });
+ },
+
+ inject: function(memo, iterator) {
+ this.each(function(value, index) {
+ memo = iterator(memo, value, index);
+ });
+ return memo;
+ },
+
+ invoke: function(method) {
+ var args = $A(arguments).slice(1);
+ return this.map(function(value) {
+ return value[method].apply(value, args);
+ });
+ },
+
+ max: function(iterator) {
+ var result;
+ this.each(function(value, index) {
+ value = (iterator || Prototype.K)(value, index);
+ if (result == undefined || value >= result)
+ result = value;
+ });
+ return result;
+ },
+
+ min: function(iterator) {
+ var result;
+ this.each(function(value, index) {
+ value = (iterator || Prototype.K)(value, index);
+ if (result == undefined || value < result)
+ result = value;
+ });
+ return result;
+ },
+
+ partition: function(iterator) {
+ var trues = [], falses = [];
+ this.each(function(value, index) {
+ ((iterator || Prototype.K)(value, index) ?
+ trues : falses).push(value);
+ });
+ return [trues, falses];
+ },
+
+ pluck: function(property) {
+ var results = [];
+ this.each(function(value, index) {
+ results.push(value[property]);
+ });
+ return results;
+ },
+
+ reject: function(iterator) {
+ var results = [];
+ this.each(function(value, index) {
+ if (!iterator(value, index))
+ results.push(value);
+ });
+ return results;
+ },
+
+ sortBy: function(iterator) {
+ return this.map(function(value, index) {
+ return {value: value, criteria: iterator(value, index)};
+ }).sort(function(left, right) {
+ var a = left.criteria, b = right.criteria;
+ return a < b ? -1 : a > b ? 1 : 0;
+ }).pluck('value');
+ },
+
+ toArray: function() {
+ return this.map();
+ },
+
+ zip: function() {
+ var iterator = Prototype.K, args = $A(arguments);
+ if (typeof args.last() == 'function')
+ iterator = args.pop();
+
+ var collections = [this].concat(args).map($A);
+ return this.map(function(value, index) {
+ return iterator(collections.pluck(index));
+ });
+ },
+
+ size: function() {
+ return this.toArray().length;
+ },
+
+ inspect: function() {
+ return '#<Enumerable:' + this.toArray().inspect() + '>';
+ }
+}
+
+Object.extend(Enumerable, {
+ map: Enumerable.collect,
+ find: Enumerable.detect,
+ select: Enumerable.findAll,
+ member: Enumerable.include,
+ entries: Enumerable.toArray
+});
+var $A = Array.from = function(iterable) {
+ if (!iterable) return [];
+ if (iterable.toArray) {
+ return iterable.toArray();
+ } else {
+ var results = [];
+ for (var i = 0, length = iterable.length; i < length; i++)
+ results.push(iterable[i]);
+ return results;
+ }
+}
+
+Object.extend(Array.prototype, Enumerable);
+
+if (!Array.prototype._reverse)
+ Array.prototype._reverse = Array.prototype.reverse;
+
+Object.extend(Array.prototype, {
+ _each: function(iterator) {
+ for (var i = 0, length = this.length; i < length; i++)
+ iterator(this[i]);
+ },
+
+ clear: function() {
+ this.length = 0;
+ return this;
+ },
+
+ first: function() {
+ return this[0];
+ },
+
+ last: function() {
+ return this[this.length - 1];
+ },
+
+ compact: function() {
+ return this.select(function(value) {
+ return value != null;
+ });
+ },
+
+ flatten: function() {
+ return this.inject([], function(array, value) {
+ return array.concat(value && value.constructor == Array ?
+ value.flatten() : [value]);
+ });
+ },
+
+ without: function() {
+ var values = $A(arguments);
+ return this.select(function(value) {
+ return !values.include(value);
+ });
+ },
+
+ indexOf: function(object) {
+ for (var i = 0, length = this.length; i < length; i++)
+ if (this[i] == object) return i;
+ return -1;
+ },
+
+ reverse: function(inline) {
+ return (inline !== false ? this : this.toArray())._reverse();
+ },
+
+ reduce: function() {
+ return this.length > 1 ? this : this[0];
+ },
+
+ uniq: function() {
+ return this.inject([], function(array, value) {
+ return array.include(value) ? array : array.concat([value]);
+ });
+ },
+
+ clone: function() {
+ return [].concat(this);
+ },
+
+ size: function() {
+ return this.length;
+ },
+
+ inspect: function() {
+ return '[' + this.map(Object.inspect).join(', ') + ']';
+ }
+});
+
+Array.prototype.toArray = Array.prototype.clone;
+
+function $w(string){
+ string = string.strip();
+ return string ? string.split(/\s+/) : [];
+}
+
+if(window.opera){
+ Array.prototype.concat = function(){
+ var array = [];
+ for(var i = 0, length = this.length; i < length; i++) array.push(this[i]);
+ for(var i = 0, length = arguments.length; i < length; i++) {
+ if(arguments[i].constructor == Array) {
+ for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
+ array.push(arguments[i][j]);
+ } else {
+ array.push(arguments[i]);
+ }
+ }
+ return array;
+ }
+}
+var PHash = function(obj) {
+ Object.extend(this, obj || {});
+};
+
+Object.extend(PHash, {
+ toQueryString: function(obj) {
+ var parts = [];
+
+ this.prototype._each.call(obj, function(pair) {
+ if (!pair.key) return;
+
+ if (pair.value && pair.value.constructor == Array) {
+ var values = pair.value.compact();
+ if (values.length < 2) pair.value = values.reduce();
+ else {
+ key = encodeURIComponent(pair.key);
+ values.each(function(value) {
+ value = value != undefined ? encodeURIComponent(value) : '';
+ parts.push(key + '=' + encodeURIComponent(value));
+ });
+ return;
+ }
+ }
+ if (pair.value == undefined) pair[1] = '';
+ parts.push(pair.map(encodeURIComponent).join('='));
+ });
+
+ return parts.join('&');
+ }
+});
+
+Object.extend(PHash.prototype, Enumerable);
+Object.extend(PHash.prototype, {
+ _each: function(iterator) {
+ for (var key in this) {
+ var value = this[key];
+ if (value && value == PHash.prototype[key]) continue;
+
+ var pair = [key, value];
+ pair.key = key;
+ pair.value = value;
+ iterator(pair);
+ }
+ },
+
+ keys: function() {
+ return this.pluck('key');
+ },
+
+ values: function() {
+ return this.pluck('value');
+ },
+
+ merge: function(hash) {
+ return $H(hash).inject(this, function(mergedHash, pair) {
+ mergedHash[pair.key] = pair.value;
+ return mergedHash;
+ });
+ },
+
+ remove: function() {
+ var result;
+ for(var i = 0, length = arguments.length; i < length; i++) {
+ var value = this[arguments[i]];
+ if (value !== undefined){
+ if (result === undefined) result = value;
+ else {
+ if (result.constructor != Array) result = [result];
+ result.push(value)
+ }
+ }
+ delete this[arguments[i]];
+ }
+ return result;
+ },
+
+ toQueryString: function() {
+ return PHash.toQueryString(this);
+ },
+
+ inspect: function() {
+ return '#<PHash:{' + this.map(function(pair) {
+ return pair.map(Object.inspect).join(': ');
+ }).join(', ') + '}>';
+ }
+});
+
+function $H(object) {
+ if (object && object.constructor == PHash) return object;
+ return new PHash(object);
+};
+ObjectRange = Class.create();
+Object.extend(ObjectRange.prototype, Enumerable);
+Object.extend(ObjectRange.prototype, {
+ initialize: function(start, end, exclusive) {
+ this.start = start;
+ this.end = end;
+ this.exclusive = exclusive;
+ },
+
+ _each: function(iterator) {
+ var value = this.start;
+ while (this.include(value)) {
+ iterator(value);
+ value = value.succ();
+ }
+ },
+
+ include: function(value) {
+ if (value < this.start)
+ return false;
+ if (this.exclusive)
+ return value < this.end;
+ return value <= this.end;
+ }
+});
+
+var $R = function(start, end, exclusive) {
+ return new ObjectRange(start, end, exclusive);
+}
+
+var Ajax = {
+ getTransport: function() {
+ return Try.these(
+ function() {return new XMLHttpRequest()},
+ function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+ function() {return new ActiveXObject('Microsoft.XMLHTTP')}
+ ) || false;
+ },
+
+ activeRequestCount: 0
+}
+
+Ajax.Responders = {
+ responders: [],
+
+ _each: function(iterator) {
+ this.responders._each(iterator);
+ },
+
+ register: function(responder) {
+ if (!this.include(responder))
+ this.responders.push(responder);
+ },
+
+ unregister: function(responder) {
+ this.responders = this.responders.without(responder);
+ },
+
+ dispatch: function(callback, request, transport, json) {
+ this.each(function(responder) {
+ if (typeof responder[callback] == 'function') {
+ try {
+ responder[callback].apply(responder, [request, transport, json]);
+ } catch (e) {}
+ }
+ });
+ }
+};
+
+Object.extend(Ajax.Responders, Enumerable);
+
+Ajax.Responders.register({
+ onCreate: function() {
+ Ajax.activeRequestCount++;
+ },
+ onComplete: function() {
+ Ajax.activeRequestCount--;
+ }
+});
+
+Ajax.Base = function() {};
+Ajax.Base.prototype = {
+ setOptions: function(options) {
+ this.options = {
+ method: 'post',
+ asynchronous: true,
+ contentType: 'application/x-www-form-urlencoded',
+ encoding: 'UTF-8',
+ parameters: ''
+ }
+ Object.extend(this.options, options || {});
+
+ this.options.method = this.options.method.toLowerCase();
+ if (typeof this.options.parameters == 'string')
+ this.options.parameters = this.options.parameters.toQueryParams();
+ }
+}
+
+Ajax.Request = Class.create();
+Ajax.Request.Events =
+ ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
+ _complete: false,
+
+ initialize: function(url, options) {
+ this.transport = Ajax.getTransport();
+ this.setOptions(options);
+ this.request(url);
+ },
+
+ request: function(url) {
+ this.url = url;
+ this.method = this.options.method;
+ var params = this.options.parameters;
+
+ if (!['get', 'post'].include(this.method)) {
+ // simulate other verbs over post
+ params['_method'] = this.method;
+ this.method = 'post';
+ }
+
+ params = PHash.toQueryString(params);
+ if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_='
+
+ // when GET, append parameters to URL
+ if (this.method == 'get' && params)
+ this.url += (this.url.indexOf('?') > -1 ? '&' : '?') + params;
+
+ try {
+ Ajax.Responders.dispatch('onCreate', this, this.transport);
+
+ this.transport.open(this.method.toUpperCase(), this.url,
+ this.options.asynchronous);
+
+ if (this.options.asynchronous)
+ setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);
+
+ this.transport.onreadystatechange = this.onStateChange.bind(this);
+ this.setRequestHeaders();
+
+ var body = this.method == 'post' ? (this.options.postBody || params) : null;
+
+ this.transport.send(body);
+
+ /* Force Firefox to handle ready state 4 for synchronous requests */
+ if (!this.options.asynchronous && this.transport.overrideMimeType)
+ this.onStateChange();
+
+ }
+ catch (e) {
+ this.dispatchException(e);
+ }
+ },
+
+ onStateChange: function() {
+ var readyState = this.transport.readyState;
+ if (readyState > 1 && !((readyState == 4) && this._complete))
+ this.respondToReadyState(this.transport.readyState);
+ },
+
+ setRequestHeaders: function() {
+ var headers = {
+ 'X-Requested-With': 'XMLHttpRequest',
+ 'X-Prototype-Version': Prototype.Version,
+ 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+ };
+
+ if (this.method == 'post') {
+ headers['Content-type'] = this.options.contentType +
+ (this.options.encoding ? '; charset=' + this.options.encoding : '');
+
+ /* Force "Connection: close" for older Mozilla browsers to work
+ * around a bug where XMLHttpRequest sends an incorrect
+ * Content-length header. See Mozilla Bugzilla #246651.
+ */
+ if (this.transport.overrideMimeType &&
+ (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
+ headers['Connection'] = 'close';
+ }
+
+ // user-defined headers
+ if (typeof this.options.requestHeaders == 'object') {
+ var extras = this.options.requestHeaders;
+
+ if (typeof extras.push == 'function')
+ for (var i = 0, length = extras.length; i < length; i += 2)
+ headers[extras[i]] = extras[i+1];
+ else
+ $H(extras).each(function(pair) { headers[pair.key] = pair.value });
+ }
+
+ for (var name in headers)
+ this.transport.setRequestHeader(name, headers[name]);
+ },
+
+ success: function() {
+ return !this.transport.status
+ || (this.transport.status >= 200 && this.transport.status < 300);
+ },
+
+ respondToReadyState: function(readyState) {
+ var state = Ajax.Request.Events[readyState];
+ var transport = this.transport, json = this.evalJSON();
+
+ if (state == 'Complete') {
+ try {
+ this._complete = true;
+ (this.options['on' + this.transport.status]
+ || this.options['on' + (this.success() ? 'Success' : 'Failure')]
+ || Prototype.emptyFunction)(transport, json);
+ } catch (e) {
+ this.dispatchException(e);
+ }
+
+ if ((this.getHeader('Content-type') || 'text/javascript').strip().
+ match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
+ this.evalResponse();
+ }
+
+ try {
+ (this.options['on' + state] || Prototype.emptyFunction)(transport, json);
+ Ajax.Responders.dispatch('on' + state, this, transport, json);
+ } catch (e) {
+ this.dispatchException(e);
+ }
+
+ if (state == 'Complete') {
+ // avoid memory leak in MSIE: clean up
+ this.transport.onreadystatechange = Prototype.emptyFunction;
+ }
+ },
+
+ getHeader: function(name) {
+ try {
+ return this.transport.getResponseHeader(name);
+ } catch (e) { return null }
+ },
+
+ evalJSON: function() {
+ try {
+ var json = this.getHeader('X-JSON');
+ return json ? eval('(' + json + ')') : null;
+ } catch (e) { return null }
+ },
+
+ evalResponse: function() {
+ try {
+ return eval(this.transport.responseText);
+ } catch (e) {
+ this.dispatchException(e);
+ }
+ },
+
+ dispatchException: function(exception) {
+ (this.options.onException || Prototype.emptyFunction)(this, exception);
+ Ajax.Responders.dispatch('onException', this, exception);
+ }
+});
+
+Ajax.Updater = Class.create();
+
+Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
+ initialize: function(container, url, options) {
+ this.container = {
+ success: (container.success || container),
+ failure: (container.failure || (container.success ? null : container))
+ }
+
+ this.transport = Ajax.getTransport();
+ this.setOptions(options);
+
+ var onComplete = this.options.onComplete || Prototype.emptyFunction;
+ this.options.onComplete = (function(transport, param) {
+ this.updateContent();
+ onComplete(transport, param);
+ }).bind(this);
+
+ this.request(url);
+ },
+
+ updateContent: function() {
+ var receiver = this.container[this.success() ? 'success' : 'failure'];
+ var response = this.transport.responseText;
+
+ if (!this.options.evalScripts) response = response.stripScripts();
+
+ if (receiver = $(receiver)) {
+ if (this.options.insertion)
+ new this.options.insertion(receiver, response);
+ else
+ receiver.update(response);
+ }
+
+ if (this.success()) {
+ if (this.onComplete)
+ setTimeout(this.onComplete.bind(this), 10);
+ }
+ }
+});
+
+Ajax.PeriodicalUpdater = Class.create();
+Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
+ initialize: function(container, url, options) {
+ this.setOptions(options);
+ this.onComplete = this.options.onComplete;
+
+ this.frequency = (this.options.frequency || 2);
+ this.decay = (this.options.decay || 1);
+
+ this.updater = {};
+ this.container = container;
+ this.url = url;
+
+ this.start();
+ },
+
+ start: function() {
+ this.options.onComplete = this.updateComplete.bind(this);
+ this.onTimerEvent();
+ },
+
+ stop: function() {
+ this.updater.options.onComplete = undefined;
+ clearTimeout(this.timer);
+ (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+ },
+
+ updateComplete: function(request) {
+ if (this.options.decay) {
+ this.decay = (request.responseText == this.lastText ?
+ this.decay * this.options.decay : 1);
+
+ this.lastText = request.responseText;
+ }
+ this.timer = setTimeout(this.onTimerEvent.bind(this),
+ this.decay * this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ this.updater = new Ajax.Updater(this.container, this.url, this.options);
+ }
+});
+function $(element) {
+ if (arguments.length > 1) {
+ for (var i = 0, elements = [], length = arguments.length; i < length; i++)
+ elements.push($(arguments[i]));
+ return elements;
+ }
+ if (typeof element == 'string')
+ element = document.getElementById(element);
+ return Element.extend(element);
+}
+
+if (Prototype.BrowserFeatures.XPath) {
+ document._getElementsByXPath = function(expression, parentElement) {
+ var results = [];
+ var query = document.evaluate(expression, $(parentElement) || document,
+ null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+ for (var i = 0, length = query.snapshotLength; i < length; i++)
+ results.push(query.snapshotItem(i));
+ return results;
+ };
+}
+
+document.getElementsByClassName = function(className, parentElement) {
+ if (Prototype.BrowserFeatures.XPath) {
+ var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
+ return document._getElementsByXPath(q, parentElement);
+ } else {
+ var children = ($(parentElement) || document.body).getElementsByTagName('*');
+ var elements = [], child;
+ for (var i = 0, length = children.length; i < length; i++) {
+ child = children[i];
+ if (Element.hasClassName(child, className))
+ elements.push(Element.extend(child));
+ }
+ return elements;
+ }
+};
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Element)
+ var Element = new Object();
+
+Element.extend = function(element) {
+ if (!element || _nativeExtensions || element.nodeType == 3) return element;
+
+ if (!element._extended && element.tagName && element != window) {
+ var methods = Object.clone(Element.Methods), cache = Element.extend.cache;
+
+ if (element.tagName == 'FORM')
+ Object.extend(methods, Form.Methods);
+ if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
+ Object.extend(methods, Form.Element.Methods);
+
+ Object.extend(methods, Element.Methods.Simulated);
+
+ for (var property in methods) {
+ var value = methods[property];
+ if (typeof value == 'function' && !(property in element))
+ element[property] = cache.findOrStore(value);
+ }
+ }
+
+ element._extended = true;
+ return element;
+};
+
+Element.extend.cache = {
+ findOrStore: function(value) {
+ return this[value] = this[value] || function() {
+ return value.apply(null, [this].concat($A(arguments)));
+ }
+ }
+};
+
+Element.Methods = {
+ visible: function(element) {
+ return $(element).style.display != 'none';
+ },
+
+ toggle: function(element) {
+ element = $(element);
+ Element[Element.visible(element) ? 'hide' : 'show'](element);
+ return element;
+ },
+
+ hide: function(element) {
+ $(element).style.display = 'none';
+ return element;
+ },
+
+ show: function(element) {
+ $(element).style.display = '';
+ return element;
+ },
+
+ remove: function(element) {
+ element = $(element);
+ element.parentNode.removeChild(element);
+ return element;
+ },
+
+ update: function(element, html) {
+ html = typeof html == 'undefined' ? '' : html.toString();
+ $(element).innerHTML = html.stripScripts();
+ setTimeout(function() {html.evalScripts()}, 10);
+ return element;
+ },
+
+ replace: function(element, html) {
+ element = $(element);
+ html = typeof html == 'undefined' ? '' : html.toString();
+ if (element.outerHTML) {
+ element.outerHTML = html.stripScripts();
+ } else {
+ var range = element.ownerDocument.createRange();
+ range.selectNodeContents(element);
+ element.parentNode.replaceChild(
+ range.createContextualFragment(html.stripScripts()), element);
+ }
+ setTimeout(function() {html.evalScripts()}, 10);
+ return element;
+ },
+
+ inspect: function(element) {
+ element = $(element);
+ var result = '<' + element.tagName.toLowerCase();
+ $H({'id': 'id', 'className': 'class'}).each(function(pair) {
+ var property = pair.first(), attribute = pair.last();
+ var value = (element[property] || '').toString();
+ if (value) result += ' ' + attribute + '=' + value.inspect(true);
+ });
+ return result + '>';
+ },
+
+ recursivelyCollect: function(element, property) {
+ element = $(element);
+ var elements = [];
+ while (element = element[property])
+ if (element.nodeType == 1)
+ elements.push(Element.extend(element));
+ return elements;
+ },
+
+ ancestors: function(element) {
+ return $(element).recursivelyCollect('parentNode');
+ },
+
+ descendants: function(element) {
+ return $A($(element).getElementsByTagName('*'));
+ },
+
+ immediateDescendants: function(element) {
+ if (!(element = $(element).firstChild)) return [];
+ while (element && element.nodeType != 1) element = element.nextSibling;
+ if (element) return [element].concat($(element).nextSiblings());
+ return [];
+ },
+
+ previousSiblings: function(element) {
+ return $(element).recursivelyCollect('previousSibling');
+ },
+
+ nextSiblings: function(element) {
+ return $(element).recursivelyCollect('nextSibling');
+ },
+
+ siblings: function(element) {
+ element = $(element);
+ return element.previousSiblings().reverse().concat(element.nextSiblings());
+ },
+
+ match: function(element, selector) {
+ if (typeof selector == 'string')
+ selector = new Selector(selector);
+ return selector.match($(element));
+ },
+
+ up: function(element, expression, index) {
+ return Selector.findElement($(element).ancestors(), expression, index);
+ },
+
+ down: function(element, expression, index) {
+ return Selector.findElement($(element).descendants(), expression, index);
+ },
+
+ previous: function(element, expression, index) {
+ return Selector.findElement($(element).previousSiblings(), expression, index);
+ },
+
+ next: function(element, expression, index) {
+ return Selector.findElement($(element).nextSiblings(), expression, index);
+ },
+
+ getElementsBySelector: function() {
+ var args = $A(arguments), element = $(args.shift());
+ return Selector.findChildElements(element, args);
+ },
+
+ getElementsByClassName: function(element, className) {
+ return document.getElementsByClassName(className, element);
+ },
+
+ readAttribute: function(element, name) {
+ element = $(element);
+ if (document.all && !window.opera) {
+ var t = Element._attributeTranslations;
+ if (t.values[name]) return t.values[name](element, name);
+ if (t.names[name]) name = t.names[name];
+ var attribute = element.attributes[name];
+ if(attribute) return attribute.nodeValue;
+ }
+ return element.getAttribute(name);
+ },
+
+ getHeight: function(element) {
+ return $(element).getDimensions().height;
+ },
+
+ getWidth: function(element) {
+ return $(element).getDimensions().width;
+ },
+
+ classNames: function(element) {
+ return new Element.ClassNames(element);
+ },
+
+ hasClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ var elementClassName = element.className;
+ if (elementClassName.length == 0) return false;
+ if (elementClassName == className ||
+ elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
+ return true;
+ return false;
+ },
+
+ addClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ Element.classNames(element).add(className);
+ return element;
+ },
+
+ removeClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ Element.classNames(element).remove(className);
+ return element;
+ },
+
+ toggleClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className);
+ return element;
+ },
+
+ observe: function() {
+ Event.observe.apply(Event, arguments);
+ return $A(arguments).first();
+ },
+
+ stopObserving: function() {
+ Event.stopObserving.apply(Event, arguments);
+ return $A(arguments).first();
+ },
+
+ // removes whitespace-only text node children
+ cleanWhitespace: function(element) {
+ element = $(element);
+ var node = element.firstChild;
+ while (node) {
+ var nextNode = node.nextSibling;
+ if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+ element.removeChild(node);
+ node = nextNode;
+ }
+ return element;
+ },
+
+ empty: function(element) {
+ return $(element).innerHTML.match(/^\s*$/);
+ },
+
+ descendantOf: function(element, ancestor) {
+ element = $(element), ancestor = $(ancestor);
+ while (element = element.parentNode)
+ if (element == ancestor) return true;
+ return false;
+ },
+
+ scrollTo: function(element) {
+ element = $(element);
+ var pos = Position.cumulativeOffset(element);
+ window.scrollTo(pos[0], pos[1]);
+ return element;
+ },
+
+ getStyle: function(element, style) {
+ element = $(element);
+ if (['float','cssFloat'].include(style))
+ style = (typeof element.style.styleFloat != 'undefined' ? 'styleFloat' : 'cssFloat');
+ style = style.camelize();
+ var value = element.style[style];
+ if (!value) {
+ if (document.defaultView && document.defaultView.getComputedStyle) {
+ var css = document.defaultView.getComputedStyle(element, null);
+ value = css ? css[style] : null;
+ } else if (element.currentStyle) {
+ value = element.currentStyle[style];
+ }
+ }
+
+ if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none'))
+ value = element['offset'+style.capitalize()] + 'px';
+
+ if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
+ if (Element.getStyle(element, 'position') == 'static') value = 'auto';
+ if(style == 'opacity') {
+ if(value) return parseFloat(value);
+ if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
+ if(value[1]) return parseFloat(value[1]) / 100;
+ return 1.0;
+ }
+ return value == 'auto' ? null : value;
+ },
+
+ setStyle: function(element, style) {
+ element = $(element);
+ for (var name in style) {
+ var value = style[name];
+ if(name == 'opacity') {
+ if (value == 1) {
+ value = (/Gecko/.test(navigator.userAgent) &&
+ !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0;
+ if(/MSIE/.test(navigator.userAgent) && !window.opera)
+ element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
+ } else if(value === '') {
+ if(/MSIE/.test(navigator.userAgent) && !window.opera)
+ element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');
+ } else {
+ if(value < 0.00001) value = 0;
+ if(/MSIE/.test(navigator.userAgent) && !window.opera)
+ element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +
+ 'alpha(opacity='+value*100+')';
+ }
+ } else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat';
+ element.style[name.camelize()] = value;
+ }
+ return element;
+ },
+
+ getDimensions: function(element) {
+ element = $(element);
+ var display = $(element).getStyle('display');
+ if (display != 'none' && display != null) // Safari bug
+ return {width: element.offsetWidth, height: element.offsetHeight};
+
+ // All *Width and *Height properties give 0 on elements with display none,
+ // so enable the element temporarily
+ var els = element.style;
+ var originalVisibility = els.visibility;
+ var originalPosition = els.position;
+ var originalDisplay = els.display;
+ els.visibility = 'hidden';
+ els.position = 'absolute';
+ els.display = 'block';
+ var originalWidth = element.clientWidth;
+ var originalHeight = element.clientHeight;
+ els.display = originalDisplay;
+ els.position = originalPosition;
+ els.visibility = originalVisibility;
+ return {width: originalWidth, height: originalHeight};
+ },
+
+ makePositioned: function(element) {
+ element = $(element);
+ var pos = Element.getStyle(element, 'position');
+ if (pos == 'static' || !pos) {
+ element._madePositioned = true;
+ element.style.position = 'relative';
+ // Opera returns the offset relative to the positioning context, when an
+ // element is position relative but top and left have not been defined
+ if (window.opera) {
+ element.style.top = 0;
+ element.style.left = 0;
+ }
+ }
+ return element;
+ },
+
+ undoPositioned: function(element) {
+ element = $(element);
+ if (element._madePositioned) {
+ element._madePositioned = undefined;
+ element.style.position =
+ element.style.top =
+ element.style.left =
+ element.style.bottom =
+ element.style.right = '';
+ }
+ return element;
+ },
+
+ makeClipping: function(element) {
+ element = $(element);
+ if (element._overflow) return element;
+ element._overflow = element.style.overflow || 'auto';
+ if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
+ element.style.overflow = 'hidden';
+ return element;
+ },
+
+ undoClipping: function(element) {
+ element = $(element);
+ if (!element._overflow) return element;
+ element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
+ element._overflow = null;
+ return element;
+ }
+};
+
+Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});
+
+Element._attributeTranslations = {};
+
+Element._attributeTranslations.names = {
+ colspan: "colSpan",
+ rowspan: "rowSpan",
+ valign: "vAlign",
+ datetime: "dateTime",
+ accesskey: "accessKey",
+ tabindex: "tabIndex",
+ enctype: "encType",
+ maxlength: "maxLength",
+ readonly: "readOnly",
+ longdesc: "longDesc"
+};
+
+Element._attributeTranslations.values = {
+ _getAttr: function(element, attribute) {
+ return element.getAttribute(attribute, 2);
+ },
+
+ _flag: function(element, attribute) {
+ return $(element).hasAttribute(attribute) ? attribute : null;
+ },
+
+ style: function(element) {
+ return element.style.cssText.toLowerCase();
+ },
+
+ title: function(element) {
+ var node = element.getAttributeNode('title');
+ return node.specified ? node.nodeValue : null;
+ }
+};
+
+Object.extend(Element._attributeTranslations.values, {
+ href: Element._attributeTranslations.values._getAttr,
+ src: Element._attributeTranslations.values._getAttr,
+ disabled: Element._attributeTranslations.values._flag,
+ checked: Element._attributeTranslations.values._flag,
+ readonly: Element._attributeTranslations.values._flag,
+ multiple: Element._attributeTranslations.values._flag
+});
+
+Element.Methods.Simulated = {
+ hasAttribute: function(element, attribute) {
+ var t = Element._attributeTranslations;
+ attribute = t.names[attribute] || attribute;
+ return $(element).getAttributeNode(attribute).specified;
+ }
+};
+
+// IE is missing .innerHTML support for TABLE-related elements
+if (document.all && !window.opera){
+ Element.Methods.update = function(element, html) {
+ element = $(element);
+ html = typeof html == 'undefined' ? '' : html.toString();
+ var tagName = element.tagName.toUpperCase();
+ if (['THEAD','TBODY','TR','TD'].include(tagName)) {
+ var div = document.createElement('div');
+ switch (tagName) {
+ case 'THEAD':
+ case 'TBODY':
+ div.innerHTML = '<table><tbody>' + html.stripScripts() + '</tbody></table>';
+ depth = 2;
+ break;
+ case 'TR':
+ div.innerHTML = '<table><tbody><tr>' + html.stripScripts() + '</tr></tbody></table>';
+ depth = 3;
+ break;
+ case 'TD':
+ div.innerHTML = '<table><tbody><tr><td>' + html.stripScripts() + '</td></tr></tbody></table>';
+ depth = 4;
+ }
+ $A(element.childNodes).each(function(node){
+ element.removeChild(node)
+ });
+ depth.times(function(){ div = div.firstChild });
+
+ $A(div.childNodes).each(
+ function(node){ element.appendChild(node) });
+ } else {
+ element.innerHTML = html.stripScripts();
+ }
+ setTimeout(function() {html.evalScripts()}, 10);
+ return element;
+ }
+};
+
+Object.extend(Element, Element.Methods);
+
+var _nativeExtensions = false;
+
+if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
+ ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {
+ var className = 'HTML' + tag + 'Element';
+ if(window[className]) return;
+ var klass = window[className] = {};
+ klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__;
+ });
+
+Element.addMethods = function(methods) {
+ Object.extend(Element.Methods, methods || {});
+
+ function copy(methods, destination, onlyIfAbsent) {
+ onlyIfAbsent = onlyIfAbsent || false;
+ var cache = Element.extend.cache;
+ for (var property in methods) {
+ var value = methods[property];
+ if (!onlyIfAbsent || !(property in destination))
+ destination[property] = cache.findOrStore(value);
+ }
+ }
+
+ if (typeof HTMLElement != 'undefined') {
+ copy(Element.Methods, HTMLElement.prototype);
+ copy(Element.Methods.Simulated, HTMLElement.prototype, true);
+ copy(Form.Methods, HTMLFormElement.prototype);
+ [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) {
+ copy(Form.Element.Methods, klass.prototype);
+ });
+ _nativeExtensions = true;
+ }
+}
+
+var Toggle = new Object();
+Toggle.display = Element.toggle;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.Insertion = function(adjacency) {
+ this.adjacency = adjacency;
+}
+
+Abstract.Insertion.prototype = {
+ initialize: function(element, content) {
+ this.element = $(element);
+ this.content = content.stripScripts();
+
+ if (this.adjacency && this.element.insertAdjacentHTML) {
+ try {
+ this.element.insertAdjacentHTML(this.adjacency, this.content);
+ } catch (e) {
+ var tagName = this.element.tagName.toUpperCase();
+ if (['TBODY', 'TR'].include(tagName)) {
+ this.insertContent(this.contentFromAnonymousTable());
+ } else {
+ throw e;
+ }
+ }
+ } else {
+ this.range = this.element.ownerDocument.createRange();
+ if (this.initializeRange) this.initializeRange();
+ this.insertContent([this.range.createContextualFragment(this.content)]);
+ }
+
+ setTimeout(function() {content.evalScripts()}, 10);
+ },
+
+ contentFromAnonymousTable: function() {
+ var div = document.createElement('div');
+ div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
+ return $A(div.childNodes[0].childNodes[0].childNodes);
+ }
+}
+
+var Insertion = new Object();
+
+Insertion.Before = Class.create();
+Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
+ initializeRange: function() {
+ this.range.setStartBefore(this.element);
+ },
+
+ insertContent: function(fragments) {
+ fragments.each((function(fragment) {
+ this.element.parentNode.insertBefore(fragment, this.element);
+ }).bind(this));
+ }
+});
+
+Insertion.Top = Class.create();
+Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
+ initializeRange: function() {
+ this.range.selectNodeContents(this.element);
+ this.range.collapse(true);
+ },
+
+ insertContent: function(fragments) {
+ fragments.reverse(false).each((function(fragment) {
+ this.element.insertBefore(fragment, this.element.firstChild);
+ }).bind(this));
+ }
+});
+
+Insertion.Bottom = Class.create();
+Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
+ initializeRange: function() {
+ this.range.selectNodeContents(this.element);
+ this.range.collapse(this.element);
+ },
+
+ insertContent: function(fragments) {
+ fragments.each((function(fragment) {
+ this.element.appendChild(fragment);
+ }).bind(this));
+ }
+});
+
+Insertion.After = Class.create();
+Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
+ initializeRange: function() {
+ this.range.setStartAfter(this.element);
+ },
+
+ insertContent: function(fragments) {
+ fragments.each((function(fragment) {
+ this.element.parentNode.insertBefore(fragment,
+ this.element.nextSibling);
+ }).bind(this));
+ }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Element.ClassNames = Class.create();
+Element.ClassNames.prototype = {
+ initialize: function(element) {
+ this.element = $(element);
+ },
+
+ _each: function(iterator) {
+ this.element.className.split(/\s+/).select(function(name) {
+ return name.length > 0;
+ })._each(iterator);
+ },
+
+ set: function(className) {
+ this.element.className = className;
+ },
+
+ add: function(classNameToAdd) {
+ if (this.include(classNameToAdd)) return;
+ this.set($A(this).concat(classNameToAdd).join(' '));
+ },
+
+ remove: function(classNameToRemove) {
+ if (!this.include(classNameToRemove)) return;
+ this.set($A(this).without(classNameToRemove).join(' '));
+ },
+
+ toString: function() {
+ return $A(this).join(' ');
+ }
+};
+
+Object.extend(Element.ClassNames.prototype, Enumerable);
+var Selector = Class.create();
+Selector.prototype = {
+ initialize: function(expression) {
+ this.params = {classNames: []};
+ this.expression = expression.toString().strip();
+ this.parseExpression();
+ this.compileMatcher();
+ },
+
+ parseExpression: function() {
+ function abort(message) { throw 'Parse error in selector: ' + message; }
+
+ if (this.expression == '') abort('empty expression');
+
+ var params = this.params, expr = this.expression, match, modifier, clause, rest;
+ while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) {
+ params.attributes = params.attributes || [];
+ params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''});
+ expr = match[1];
+ }
+
+ if (expr == '*') return this.params.wildcard = true;
+
+ while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {
+ modifier = match[1], clause = match[2], rest = match[3];
+ switch (modifier) {
+ case '#': params.id = clause; break;
+ case '.': params.classNames.push(clause); break;
+ case '':
+ case undefined: params.tagName = clause.toUpperCase(); break;
+ default: abort(expr.inspect());
+ }
+ expr = rest;
+ }
+
+ if (expr.length > 0) abort(expr.inspect());
+ },
+
+ buildMatchExpression: function() {
+ var params = this.params, conditions = [], clause;
+
+ if (params.wildcard)
+ conditions.push('true');
+ if (clause = params.id)
+ conditions.push('element.readAttribute("id") == ' + clause.inspect());
+ if (clause = params.tagName)
+ conditions.push('element.tagName.toUpperCase() == ' + clause.inspect());
+ if ((clause = params.classNames).length > 0)
+ for (var i = 0, length = clause.length; i < length; i++)
+ conditions.push('element.hasClassName(' + clause[i].inspect() + ')');
+ if (clause = params.attributes) {
+ clause.each(function(attribute) {
+ var value = 'element.readAttribute(' + attribute.name.inspect() + ')';
+ var splitValueBy = function(delimiter) {
+ return value + ' && ' + value + '.split(' + delimiter.inspect() + ')';
+ }
+
+ switch (attribute.operator) {
+ case '=': conditions.push(value + ' == ' + attribute.value.inspect()); break;
+ case '~=': conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break;
+ case '|=': conditions.push(
+ splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect()
+ ); break;
+ case '!=': conditions.push(value + ' != ' + attribute.value.inspect()); break;
+ case '':
+ case undefined: conditions.push('element.hasAttribute(' + attribute.name.inspect() + ')'); break;
+ default: throw 'Unknown operator ' + attribute.operator + ' in selector';
+ }
+ });
+ }
+
+ return conditions.join(' && ');
+ },
+
+ compileMatcher: function() {
+ this.match = new Function('element', 'if (!element.tagName) return false; \
+ element = $(element); \
+ return ' + this.buildMatchExpression());
+ },
+
+ findElements: function(scope) {
+ var element;
+
+ if (element = $(this.params.id))
+ if (this.match(element))
+ if (!scope || Element.childOf(element, scope))
+ return [element];
+
+ scope = (scope || document).getElementsByTagName(this.params.tagName || '*');
+
+ var results = [];
+ for (var i = 0, length = scope.length; i < length; i++)
+ if (this.match(element = scope[i]))
+ results.push(Element.extend(element));
+
+ return results;
+ },
+
+ toString: function() {
+ return this.expression;
+ }
+}
+
+Object.extend(Selector, {
+ matchElements: function(elements, expression) {
+ var selector = new Selector(expression);
+ return elements.select(selector.match.bind(selector)).map(Element.extend);
+ },
+
+ findElement: function(elements, expression, index) {
+ if (typeof expression == 'number') index = expression, expression = false;
+ return Selector.matchElements(elements, expression || '*')[index || 0];
+ },
+
+ findChildElements: function(element, expressions) {
+ return expressions.map(function(expression) {
+ return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr) {
+ var selector = new Selector(expr);
+ return results.inject([], function(elements, result) {
+ return elements.concat(selector.findElements(result || element));
+ });
+ });
+ }).flatten();
+ }
+});
+
+function $$() {
+ return Selector.findChildElements(document, $A(arguments));
+}
+var Form = {
+ reset: function(form) {
+ $(form).reset();
+ return form;
+ },
+
+ serializeElements: function(elements, getHash) {
+ var data = elements.inject({}, function(result, element) {
+ if (!element.disabled && element.name) {
+ var key = element.name, value = $(element).getValue();
+ if (value != undefined) {
+ if (result[key]) {
+ if (result[key].constructor != Array) result[key] = [result[key]];
+ result[key].push(value);
+ }
+ else result[key] = value;
+ }
+ }
+ return result;
+ });
+
+ return getHash ? data : PHash.toQueryString(data);
+ }
+};
+
+Form.Methods = {
+ serialize: function(form, getHash) {
+ return Form.serializeElements(Form.getElements(form), getHash);
+ },
+
+ getElements: function(form) {
+ return $A($(form).getElementsByTagName('*')).inject([],
+ function(elements, child) {
+ if (Form.Element.Serializers[child.tagName.toLowerCase()])
+ elements.push(Element.extend(child));
+ return elements;
+ }
+ );
+ },
+
+ getInputs: function(form, typeName, name) {
+ form = $(form);
+ var inputs = form.getElementsByTagName('input');
+
+ if (!typeName && !name) return $A(inputs).map(Element.extend);
+
+ for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
+ var input = inputs[i];
+ if ((typeName && input.type != typeName) || (name && input.name != name))
+ continue;
+ matchingInputs.push(Element.extend(input));
+ }
+
+ return matchingInputs;
+ },
+
+ disable: function(form) {
+ form = $(form);
+ form.getElements().each(function(element) {
+ element.blur();
+ element.disabled = 'true';
+ });
+ return form;
+ },
+
+ enable: function(form) {
+ form = $(form);
+ form.getElements().each(function(element) {
+ element.disabled = '';
+ });
+ return form;
+ },
+
+ findFirstElement: function(form) {
+ return $(form).getElements().find(function(element) {
+ return element.type != 'hidden' && !element.disabled &&
+ ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+ });
+ },
+
+ focusFirstElement: function(form) {
+ form = $(form);
+ form.findFirstElement().activate();
+ return form;
+ }
+}
+
+Object.extend(Form, Form.Methods);
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element = {
+ focus: function(element) {
+ $(element).focus();
+ return element;
+ },
+
+ select: function(element) {
+ $(element).select();
+ return element;
+ }
+}
+
+Form.Element.Methods = {
+ serialize: function(element) {
+ element = $(element);
+ if (!element.disabled && element.name) {
+ var value = element.getValue();
+ if (value != undefined) {
+ var pair = {};
+ pair[element.name] = value;
+ return PHash.toQueryString(pair);
+ }
+ }
+ return '';
+ },
+
+ getValue: function(element) {
+ element = $(element);
+ var method = element.tagName.toLowerCase();
+ return Form.Element.Serializers[method](element);
+ },
+
+ clear: function(element) {
+ $(element).value = '';
+ return element;
+ },
+
+ present: function(element) {
+ return $(element).value != '';
+ },
+
+ activate: function(element) {
+ element = $(element);
+ element.focus();
+ if (element.select && ( element.tagName.toLowerCase() != 'input' ||
+ !['button', 'reset', 'submit'].include(element.type) ) )
+ element.select();
+ return element;
+ },
+
+ disable: function(element) {
+ element = $(element);
+ element.disabled = true;
+ return element;
+ },
+
+ enable: function(element) {
+ element = $(element);
+ element.blur();
+ element.disabled = false;
+ return element;
+ }
+}
+
+Object.extend(Form.Element, Form.Element.Methods);
+var Field = Form.Element;
+var $F = Form.Element.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element.Serializers = {
+ input: function(element) {
+ switch (element.type.toLowerCase()) {
+ case 'checkbox':
+ case 'radio':
+ return Form.Element.Serializers.inputSelector(element);
+ default:
+ return Form.Element.Serializers.textarea(element);
+ }
+ },
+
+ inputSelector: function(element) {
+ return element.checked ? element.value : null;
+ },
+
+ textarea: function(element) {
+ return element.value;
+ },
+
+ select: function(element) {
+ return this[element.type == 'select-one' ?
+ 'selectOne' : 'selectMany'](element);
+ },
+
+ selectOne: function(element) {
+ var index = element.selectedIndex;
+ return index >= 0 ? this.optionValue(element.options[index]) : null;
+ },
+
+ selectMany: function(element) {
+ var values, length = element.length;
+ if (!length) return null;
+
+ for (var i = 0, values = []; i < length; i++) {
+ var opt = element.options[i];
+ if (opt.selected) values.push(this.optionValue(opt));
+ }
+ return values;
+ },
+
+ optionValue: function(opt) {
+ // extend element because hasAttribute may not be native
+ return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = function() {}
+Abstract.TimedObserver.prototype = {
+ initialize: function(element, frequency, callback) {
+ this.frequency = frequency;
+ this.element = $(element);
+ this.callback = callback;
+
+ this.lastValue = this.getValue();
+ this.registerCallback();
+ },
+
+ registerCallback: function() {
+ setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+ },
+
+ onTimerEvent: function() {
+ var value = this.getValue();
+ var changed = ('string' == typeof this.lastValue && 'string' == typeof value
+ ? this.lastValue != value : String(this.lastValue) != String(value));
+ if (changed) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
+ }
+}
+
+Form.Element.Observer = Class.create();
+Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
+});
+
+Form.Observer = Class.create();
+Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = function() {}
+Abstract.EventObserver.prototype = {
+ initialize: function(element, callback) {
+ this.element = $(element);
+ this.callback = callback;
+
+ this.lastValue = this.getValue();
+ if (this.element.tagName.toLowerCase() == 'form')
+ this.registerFormCallbacks();
+ else
+ this.registerCallback(this.element);
+ },
+
+ onElementEvent: function() {
+ var value = this.getValue();
+ if (this.lastValue != value) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
+ },
+
+ registerFormCallbacks: function() {
+ Form.getElements(this.element).each(this.registerCallback.bind(this));
+ },
+
+ registerCallback: function(element) {
+ if (element.type) {
+ switch (element.type.toLowerCase()) {
+ case 'checkbox':
+ case 'radio':
+ Event.observe(element, 'click', this.onElementEvent.bind(this));
+ break;
+ default:
+ Event.observe(element, 'change', this.onElementEvent.bind(this));
+ break;
+ }
+ }
+ }
+}
+
+Form.Element.EventObserver = Class.create();
+Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
+});
+
+Form.EventObserver = Class.create();
+Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
+});
+if (!window.Event) {
+ var Event = new Object();
+}
+
+Object.extend(Event, {
+ KEY_BACKSPACE: 8,
+ KEY_TAB: 9,
+ KEY_RETURN: 13,
+ KEY_ESC: 27,
+ KEY_LEFT: 37,
+ KEY_UP: 38,
+ KEY_RIGHT: 39,
+ KEY_DOWN: 40,
+ KEY_DELETE: 46,
+ KEY_HOME: 36,
+ KEY_END: 35,
+ KEY_PAGEUP: 33,
+ KEY_PAGEDOWN: 34,
+
+ element: function(event) {
+ return event.target || event.srcElement;
+ },
+
+ isLeftClick: function(event) {
+ return (((event.which) && (event.which == 1)) ||
+ ((event.button) && (event.button == 1)));
+ },
+
+ pointerX: function(event) {
+ return event.pageX || (event.clientX +
+ (document.documentElement.scrollLeft || document.body.scrollLeft));
+ },
+
+ pointerY: function(event) {
+ return event.pageY || (event.clientY +
+ (document.documentElement.scrollTop || document.body.scrollTop));
+ },
+
+ stop: function(event) {
+ if (event.preventDefault) {
+ event.preventDefault();
+ event.stopPropagation();
+ } else {
+ event.returnValue = false;
+ event.cancelBubble = true;
+ }
+ },
+
+ // find the first node with the given tagName, starting from the
+ // node the event was triggered on; traverses the DOM upwards
+ findElement: function(event, tagName) {
+ var element = Event.element(event);
+ while (element.parentNode && (!element.tagName ||
+ (element.tagName.toUpperCase() != tagName.toUpperCase())))
+ element = element.parentNode;
+ return element;
+ },
+
+ observers: false,
+
+ _observeAndCache: function(element, name, observer, useCapture) {
+ if (!this.observers) this.observers = [];
+ if (element.addEventListener) {
+ this.observers.push([element, name, observer, useCapture]);
+ element.addEventListener(name, observer, useCapture);
+ } else if (element.attachEvent) {
+ this.observers.push([element, name, observer, useCapture]);
+ element.attachEvent('on' + name, observer);
+ }
+ },
+
+ unloadCache: function() {
+ if (!Event.observers) return;
+ for (var i = 0, length = Event.observers.length; i < length; i++) {
+ Event.stopObserving.apply(this, Event.observers[i]);
+ Event.observers[i][0] = null;
+ }
+ Event.observers = false;
+ },
+
+ observe: function(element, name, observer, useCapture) {
+ element = $(element);
+ useCapture = useCapture || false;
+
+ if (name == 'keypress' &&
+ (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
+ || element.attachEvent))
+ name = 'keydown';
+
+ Event._observeAndCache(element, name, observer, useCapture);
+ },
+
+ stopObserving: function(element, name, observer, useCapture) {
+ element = $(element);
+ useCapture = useCapture || false;
+
+ if (name == 'keypress' &&
+ (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
+ || element.detachEvent))
+ name = 'keydown';
+
+ if (element.removeEventListener) {
+ element.removeEventListener(name, observer, useCapture);
+ } else if (element.detachEvent) {
+ try {
+ element.detachEvent('on' + name, observer);
+ } catch (e) {}
+ }
+ }
+});
+
+/* prevent memory leaks in IE */
+if (navigator.appVersion.match(/\bMSIE\b/))
+ Event.observe(window, 'unload', Event.unloadCache, false);
+var Position = {
+ // set to true if needed, warning: firefox performance problems
+ // NOT neeeded for page scrolling, only if draggable contained in
+ // scrollable elements
+ includeScrollOffsets: false,
+
+ // must be called before calling withinIncludingScrolloffset, every time the
+ // page is scrolled
+ prepare: function() {
+ this.deltaX = window.pageXOffset
+ || document.documentElement.scrollLeft
+ || document.body.scrollLeft
+ || 0;
+ this.deltaY = window.pageYOffset
+ || document.documentElement.scrollTop
+ || document.body.scrollTop
+ || 0;
+ },
+
+ realOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.scrollTop || 0;
+ valueL += element.scrollLeft || 0;
+ element = element.parentNode;
+ } while (element);
+ return [valueL, valueT];
+ },
+
+ cumulativeOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ element = element.offsetParent;
+ } while (element);
+ return [valueL, valueT];
+ },
+
+ positionedOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ element = element.offsetParent;
+ if (element) {
+ if(element.tagName=='BODY') break;
+ var p = Element.getStyle(element, 'position');
+ if (p == 'relative' || p == 'absolute') break;
+ }
+ } while (element);
+ return [valueL, valueT];
+ },
+
+ offsetParent: function(element) {
+ if (element.offsetParent) return element.offsetParent;
+ if (element == document.body) return element;
+
+ while ((element = element.parentNode) && element != document.body)
+ if (Element.getStyle(element, 'position') != 'static')
+ return element;
+
+ return document.body;
+ },
+
+ // caches x/y coordinate pair to use with overlap
+ within: function(element, x, y) {
+ if (this.includeScrollOffsets)
+ return this.withinIncludingScrolloffsets(element, x, y);
+ this.xcomp = x;
+ this.ycomp = y;
+ this.offset = this.cumulativeOffset(element);
+
+ return (y >= this.offset[1] &&
+ y < this.offset[1] + element.offsetHeight &&
+ x >= this.offset[0] &&
+ x < this.offset[0] + element.offsetWidth);
+ },
+
+ withinIncludingScrolloffsets: function(element, x, y) {
+ var offsetcache = this.realOffset(element);
+
+ this.xcomp = x + offsetcache[0] - this.deltaX;
+ this.ycomp = y + offsetcache[1] - this.deltaY;
+ this.offset = this.cumulativeOffset(element);
+
+ return (this.ycomp >= this.offset[1] &&
+ this.ycomp < this.offset[1] + element.offsetHeight &&
+ this.xcomp >= this.offset[0] &&
+ this.xcomp < this.offset[0] + element.offsetWidth);
+ },
+
+ // within must be called directly before
+ overlap: function(mode, element) {
+ if (!mode) return 0;
+ if (mode == 'vertical')
+ return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+ element.offsetHeight;
+ if (mode == 'horizontal')
+ return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+ element.offsetWidth;
+ },
+
+ page: function(forElement) {
+ var valueT = 0, valueL = 0;
+
+ var element = forElement;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+
+ // Safari fix
+ if (element.offsetParent==document.body)
+ if (Element.getStyle(element,'position')=='absolute') break;
+
+ } while (element = element.offsetParent);
+
+ element = forElement;
+ do {
+ if (!window.opera || element.tagName=='BODY') {
+ valueT -= element.scrollTop || 0;
+ valueL -= element.scrollLeft || 0;
+ }
+ } while (element = element.parentNode);
+
+ return [valueL, valueT];
+ },
+
+ clone: function(source, target) {
+ var options = Object.extend({
+ setLeft: true,
+ setTop: true,
+ setWidth: true,
+ setHeight: true,
+ offsetTop: 0,
+ offsetLeft: 0
+ }, arguments[2] || {})
+
+ // find page position of source
+ source = $(source);
+ var p = Position.page(source);
+
+ // find coordinate system to use
+ target = $(target);
+ var delta = [0, 0];
+ var parent = null;
+ // delta [0,0] will do fine with position: fixed elements,
+ // position:absolute needs offsetParent deltas
+ if (Element.getStyle(target,'position') == 'absolute') {
+ parent = Position.offsetParent(target);
+ delta = Position.page(parent);
+ }
+
+ // correct by body offsets (fixes Safari)
+ if (parent == document.body) {
+ delta[0] -= document.body.offsetLeft;
+ delta[1] -= document.body.offsetTop;
+ }
+
+ // set position
+ if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
+ if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
+ if(options.setWidth) target.style.width = source.offsetWidth + 'px';
+ if(options.setHeight) target.style.height = source.offsetHeight + 'px';
+ },
+
+ absolutize: function(element) {
+ element = $(element);
+ if (element.style.position == 'absolute') return;
+ Position.prepare();
+
+ var offsets = Position.positionedOffset(element);
+ var top = offsets[1];
+ var left = offsets[0];
+ var width = element.clientWidth;
+ var height = element.clientHeight;
+
+ element._originalLeft = left - parseFloat(element.style.left || 0);
+ element._originalTop = top - parseFloat(element.style.top || 0);
+ element._originalWidth = element.style.width;
+ element._originalHeight = element.style.height;
+
+ element.style.position = 'absolute';
+ element.style.top = top + 'px';
+ element.style.left = left + 'px';
+ element.style.width = width + 'px';
+ element.style.height = height + 'px';
+ },
+
+ relativize: function(element) {
+ element = $(element);
+ if (element.style.position == 'relative') return;
+ Position.prepare();
+
+ element.style.position = 'relative';
+ var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
+ var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
+
+ element.style.top = top + 'px';
+ element.style.left = left + 'px';
+ element.style.height = element._originalHeight;
+ element.style.width = element._originalWidth;
+ }
+}
+
+// Safari returns margins on body which is incorrect if the child is absolutely
+// positioned. For performance reasons, redefine Position.cumulativeOffset for
+// KHTML/WebKit only.
+if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
+ Position.cumulativeOffset = function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ if (element.offsetParent == document.body)
+ if (Element.getStyle(element, 'position') == 'absolute') break;
+
+ element = element.offsetParent;
+ } while (element);
+
+ return [valueL, valueT];
+ }
+}
+
+Element.addMethods(); \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/scriptaculous.js b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/scriptaculous.js
new file mode 100644
index 00000000..585313c3
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/scriptaculous.js
@@ -0,0 +1,51 @@
+// script.aculo.us scriptaculous.js v1.7.0, Fri Jan 19 19:16:36 CET 2007
+
+// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+var Scriptaculous = {
+ Version: '1.7.0',
+ require: function(libraryName) {
+ // inserting via DOM fails in Safari 2.0, so brute force approach
+ document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
+ },
+ load: function() {
+ if((typeof Prototype=='undefined') ||
+ (typeof Element == 'undefined') ||
+ (typeof Element.Methods=='undefined') ||
+ parseFloat(Prototype.Version.split(".")[0] + "." +
+ Prototype.Version.split(".")[1]) < 1.5)
+ throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0");
+
+ $A(document.getElementsByTagName("script")).findAll( function(s) {
+ return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
+ }).each( function(s) {
+ var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
+ var includes = s.src.match(/\?.*load=([a-z,]*)/);
+ (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each(
+ function(include) { Scriptaculous.require(path+include+'.js') });
+ });
+ }
+}
+
+Scriptaculous.load(); \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/slider.js b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/slider.js
new file mode 100644
index 00000000..f24f2823
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/js/slider.js
@@ -0,0 +1,278 @@
+// script.aculo.us slider.js v1.7.0, Fri Jan 19 19:16:36 CET 2007
+
+// Copyright (c) 2005, 2006 Marty Haught, Thomas Fuchs
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+if(!Control) var Control = {};
+Control.Slider = Class.create();
+
+// options:
+// axis: 'vertical', or 'horizontal' (default)
+//
+// callbacks:
+// onChange(value)
+// onSlide(value)
+Control.Slider.prototype = {
+ initialize: function(handle, track, options) {
+ var slider = this;
+
+ if(handle instanceof Array) {
+ this.handles = handle.collect( function(e) { return $(e) });
+ } else {
+ this.handles = [$(handle)];
+ }
+
+ this.track = $(track);
+ this.options = options || {};
+
+ this.axis = this.options.axis || 'horizontal';
+ this.increment = this.options.increment || 1;
+ this.step = parseInt(this.options.step || '1');
+ this.range = this.options.range || $R(0,1);
+
+ this.value = 0; // assure backwards compat
+ this.values = this.handles.map( function() { return 0 });
+ this.spans = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;
+ this.options.startSpan = $(this.options.startSpan || null);
+ this.options.endSpan = $(this.options.endSpan || null);
+
+ this.restricted = this.options.restricted || false;
+
+ this.maximum = this.options.maximum || this.range.end;
+ this.minimum = this.options.minimum || this.range.start;
+
+ // Will be used to align the handle onto the track, if necessary
+ this.alignX = parseInt(this.options.alignX || '0');
+ this.alignY = parseInt(this.options.alignY || '0');
+
+ this.trackLength = this.maximumOffset() - this.minimumOffset();
+
+ this.handleLength = this.isVertical() ?
+ (this.handles[0].offsetHeight != 0 ?
+ this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) :
+ (this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth :
+ this.handles[0].style.width.replace(/px$/,""));
+
+ this.active = false;
+ this.dragging = false;
+ this.disabled = false;
+
+ if(this.options.disabled) this.setDisabled();
+
+ // Allowed values array
+ this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;
+ if(this.allowedValues) {
+ this.minimum = this.allowedValues.min();
+ this.maximum = this.allowedValues.max();
+ }
+
+ this.eventMouseDown = this.startDrag.bindAsEventListener(this);
+ this.eventMouseUp = this.endDrag.bindAsEventListener(this);
+ this.eventMouseMove = this.update.bindAsEventListener(this);
+
+ // Initialize handles in reverse (make sure first handle is active)
+ this.handles.each( function(h,i) {
+ i = slider.handles.length-1-i;
+ slider.setValue(parseFloat(
+ (slider.options.sliderValue instanceof Array ?
+ slider.options.sliderValue[i] : slider.options.sliderValue) ||
+ slider.range.start), i);
+ Element.makePositioned(h); // fix IE
+ Event.observe(h, "mousedown", slider.eventMouseDown);
+ });
+
+ Event.observe(this.track, "mousedown", this.eventMouseDown);
+ Event.observe(document, "mouseup", this.eventMouseUp);
+ Event.observe(document, "mousemove", this.eventMouseMove);
+
+ this.initialized = true;
+ },
+ dispose: function() {
+ var slider = this;
+ Event.stopObserving(this.track, "mousedown", this.eventMouseDown);
+ Event.stopObserving(document, "mouseup", this.eventMouseUp);
+ Event.stopObserving(document, "mousemove", this.eventMouseMove);
+ this.handles.each( function(h) {
+ Event.stopObserving(h, "mousedown", slider.eventMouseDown);
+ });
+ },
+ setDisabled: function(){
+ this.disabled = true;
+ },
+ setEnabled: function(){
+ this.disabled = false;
+ },
+ getNearestValue: function(value){
+ if(this.allowedValues){
+ if(value >= this.allowedValues.max()) return(this.allowedValues.max());
+ if(value <= this.allowedValues.min()) return(this.allowedValues.min());
+
+ var offset = Math.abs(this.allowedValues[0] - value);
+ var newValue = this.allowedValues[0];
+ this.allowedValues.each( function(v) {
+ var currentOffset = Math.abs(v - value);
+ if(currentOffset <= offset){
+ newValue = v;
+ offset = currentOffset;
+ }
+ });
+ return newValue;
+ }
+ if(value > this.range.end) return this.range.end;
+ if(value < this.range.start) return this.range.start;
+ return value;
+ },
+ setValue: function(sliderValue, handleIdx){
+ if(!this.active) {
+ this.activeHandleIdx = handleIdx || 0;
+ this.activeHandle = this.handles[this.activeHandleIdx];
+ this.updateStyles();
+ }
+ handleIdx = handleIdx || this.activeHandleIdx || 0;
+ if(this.initialized && this.restricted) {
+ if((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))
+ sliderValue = this.values[handleIdx-1];
+ if((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))
+ sliderValue = this.values[handleIdx+1];
+ }
+ sliderValue = this.getNearestValue(sliderValue);
+ this.values[handleIdx] = sliderValue;
+ this.value = this.values[0]; // assure backwards compat
+
+ this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =
+ this.translateToPx(sliderValue);
+
+ this.drawSpans();
+ if(!this.dragging || !this.event) this.updateFinished();
+ },
+ setValueBy: function(delta, handleIdx) {
+ this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta,
+ handleIdx || this.activeHandleIdx || 0);
+ },
+ translateToPx: function(value) {
+ return Math.round(
+ ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *
+ (value - this.range.start)) + "px";
+ },
+ translateToValue: function(offset) {
+ return ((offset/(this.trackLength-this.handleLength) *
+ (this.range.end-this.range.start)) + this.range.start);
+ },
+ getRange: function(range) {
+ var v = this.values.sortBy(Prototype.K);
+ range = range || 0;
+ return $R(v[range],v[range+1]);
+ },
+ minimumOffset: function(){
+ return(this.isVertical() ? this.alignY : this.alignX);
+ },
+ maximumOffset: function(){
+ return(this.isVertical() ?
+ (this.track.offsetHeight != 0 ? this.track.offsetHeight :
+ this.track.style.height.replace(/px$/,"")) - this.alignY :
+ (this.track.offsetWidth != 0 ? this.track.offsetWidth :
+ this.track.style.width.replace(/px$/,"")) - this.alignY);
+ },
+ isVertical: function(){
+ return (this.axis == 'vertical');
+ },
+ drawSpans: function() {
+ var slider = this;
+ if(this.spans)
+ $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });
+ if(this.options.startSpan)
+ this.setSpan(this.options.startSpan,
+ $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));
+ if(this.options.endSpan)
+ this.setSpan(this.options.endSpan,
+ $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));
+ },
+ setSpan: function(span, range) {
+ if(this.isVertical()) {
+ span.style.top = this.translateToPx(range.start);
+ span.style.height = this.translateToPx(range.end - range.start + this.range.start);
+ } else {
+ span.style.left = this.translateToPx(range.start);
+ span.style.width = this.translateToPx(range.end - range.start + this.range.start);
+ }
+ },
+ updateStyles: function() {
+ this.handles.each( function(h){ Element.removeClassName(h, 'selected') });
+ Element.addClassName(this.activeHandle, 'selected');
+ },
+ startDrag: function(event) {
+ if(Event.isLeftClick(event)) {
+ if(!this.disabled){
+ this.active = true;
+
+ var handle = Event.element(event);
+ var pointer = [Event.pointerX(event), Event.pointerY(event)];
+ var track = handle;
+ if(track==this.track) {
+ var offsets = Position.cumulativeOffset(this.track);
+ this.event = event;
+ this.setValue(this.translateToValue(
+ (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)
+ ));
+ var offsets = Position.cumulativeOffset(this.activeHandle);
+ this.offsetX = (pointer[0] - offsets[0]);
+ this.offsetY = (pointer[1] - offsets[1]);
+ } else {
+ // find the handle (prevents issues with Safari)
+ while((this.handles.indexOf(handle) == -1) && handle.parentNode)
+ handle = handle.parentNode;
+
+ if(this.handles.indexOf(handle)!=-1) {
+ this.activeHandle = handle;
+ this.activeHandleIdx = this.handles.indexOf(this.activeHandle);
+ this.updateStyles();
+
+ var offsets = Position.cumulativeOffset(this.activeHandle);
+ this.offsetX = (pointer[0] - offsets[0]);
+ this.offsetY = (pointer[1] - offsets[1]);
+ }
+ }
+ }
+ Event.stop(event);
+ }
+ },
+ update: function(event) {
+ if(this.active) {
+ if(!this.dragging) this.dragging = true;
+ this.draw(event);
+ // fix AppleWebKit rendering
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
+ Event.stop(event);
+ }
+ },
+ draw: function(event) {
+ var pointer = [Event.pointerX(event), Event.pointerY(event)];
+ var offsets = Position.cumulativeOffset(this.track);
+ pointer[0] -= this.offsetX + offsets[0];
+ pointer[1] -= this.offsetY + offsets[1];
+ this.event = event;
+ this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));
+ if(this.initialized && this.options.onSlide)
+ this.options.onSlide(this.values.length>1 ? this.values : this.value, this);
+ },
+ endDrag: function(event) {
+ if(this.active && this.dragging) {
+ this.finishDrag(event, true);
+ Event.stop(event);
+ }
+ this.active = false;
+ this.dragging = false;
+ },
+ finishDrag: function(event, success) {
+ this.active = false;
+ this.dragging = false;
+ this.updateFinished();
+ },
+ updateFinished: function() {
+ if(this.initialized && this.options.onChange)
+ this.options.onChange(this.values.length>1 ? this.values : this.value, this);
+ this.event = null;
+ }
+} \ No newline at end of file
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/en/settings.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/en/settings.php
new file mode 100644
index 00000000..883a4942
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/en/settings.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Language file for configuration manager
+ *
+ * @author: Riccardo "battlehorse" Govoni <battlehorse@gmail.com>
+ */
+
+$lang['btl_sidebar_position'] = 'sidebar position' ;
+$lang['btl_sidebar_name'] = 'sidebar page name' ;
+$lang['btl_action_palette'] = 'enable action palette';
+$lang['btl_default_page_actions_status'] = 'default status for page actions';
+$lang['btl_default_wiki_actions_status'] = 'default status for wiki actions';
+$lang['btl_default_user_actions_status'] = 'default status for user actions';
+$lang['btl_default_submit_actions_status'] = 'default status for submit actions' ;
+$lang['btl_language'] = 'template language';
+
+$lang['btl_strip_page_actions'] = 'Page Actions';
+$lang['btl_strip_wiki_actions'] = 'Wiki Actions';
+$lang['btl_strip_user_actions'] = 'User Actions';
+$lang['btl_strip_submit_actions'] = 'Submit This Story';
+
+?>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/hu/settings.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/hu/settings.php
new file mode 100644
index 00000000..08066883
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/hu/settings.php
@@ -0,0 +1,22 @@
+<?php
+/**
+ * Language file for configuration manager
+ *
+ * @author: Riccardo "battlehorse" Govoni <battlehorse@gmail.com>
+ */
+
+$lang['btl_sidebar_position'] = 'sidebar pozíció' ;
+$lang['btl_sidebar_name'] = 'sidebar oldal neve' ;
+$lang['btl_action_palette'] = 'A tevékenység paletta engedélyezése';
+$lang['btl_default_page_actions_status'] = 'Az aktuális oldal tevékenységek alapértelmezett státusza';
+$lang['btl_default_wiki_actions_status'] = 'A wiki twvékenységek alapértelmezett státusza';
+$lang['btl_default_user_actions_status'] = 'A felhasználói tevékenységek alapértelmezett státusza';
+$lang['btl_default_submit_actions_status'] = 'default status for submit actions' ;
+$lang['btl_language'] = 'template language';
+
+$lang['btl_strip_page_actions'] = 'Aktuális oldal';
+$lang['btl_strip_wiki_actions'] = 'Wiki';
+$lang['btl_strip_user_actions'] = 'Felhasználó';
+$lang['btl_strip_submit_actions'] = 'Oldal feljegyzése';
+
+?>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/it/settings.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/it/settings.php
new file mode 100644
index 00000000..3977e614
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/lang/it/settings.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Language file for configuration manager
+ *
+ * @author: Riccardo "battlehorse" Govoni <battlehorse@gmail.com>
+ */
+
+$lang['btl_sidebar_position'] = 'posizione della barra laterale' ;
+$lang['btl_sidebar_name'] = 'nome della pagina per la barra laterale' ;
+$lang['btl_action_palette'] = 'abilita la palette delle azioni';
+$lang['btl_default_page_actions_status'] = 'stato di default per azioni di pagina';
+$lang['btl_default_wiki_actions_status'] = 'stato di default per azioni sul wiki';
+$lang['btl_default_user_actions_status'] = 'stato di default per azioni utente';
+$lang['btl_default_submit_actions_status'] = 'stato di default per azioni di invio storia' ;
+$lang['btl_language'] = 'lingua del template';
+
+$lang['btl_strip_page_actions'] = 'Azioni Pagina';
+$lang['btl_strip_wiki_actions'] = 'Azioni Wiki';
+$lang['btl_strip_user_actions'] = 'Azioni Utente';
+$lang['btl_strip_submit_actions'] = 'Invia questa storia';
+?>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/layout.css b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/layout.css
new file mode 100644
index 00000000..3db587be
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/layout.css
@@ -0,0 +1,232 @@
+/**
+ * Tableless Layout for default template
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author moraes <moraes@tipos.com.br>
+ * @author Riccardo Govoni <battlehorse@gmail.com>
+ */
+
+/* -------------- top row --------------- */
+div.dokuwiki .header {
+ border-style : solid;
+ border-width: 1px 1px 1px 1px;
+ border-color: __border__ ;
+ margin-top : 5px;
+ background-image: url(__rg_logo_gradient__);
+ background-repeat: repeat-x;
+ height: 57px;
+ overflow: hidden;
+}
+
+// used for pagename in the top left of the page. Unused in rg template
+div.dokuwiki .pagename {
+ float: left;
+ font-size: 200%;
+ font-weight: bolder;
+ color: __background_alt__;
+ text-align: left;
+ vertical-align: middle;
+}
+
+div.dokuwiki .pagename a:link, div.dokuwiki .pagename a:visited, div.dokuwiki .pagename a:hover, div.dokuwiki .pagename a:active {
+ color: __extern__;
+ text-decoration:none;
+}
+
+div.dokuwiki .logo {
+ background-image: url(__rg_wiki_logo__);
+ background-image: url(/skin/classic/base/img/mayor_small_ssl.gif);
+ background-repeat: no-repeat;
+ background-position : 5px 5px ;
+ height: 57px;
+ overflow: hidden;
+ font-size:15px;
+ padding: 15px 50px ;
+ font-weight:bolder;
+ text-align:left;
+ vertical-align:middle;
+}
+
+div.dokuwiki .logo a:link, div.dokuwiki .logo a:visited, div.dokuwiki .logo a:hover, div.dokuwiki .logo a:active {
+ color: __rg_logo_color__;
+ text-decoration:none;
+/* font-family: cursive,Arial,sans-serif,sans;*/
+/* font-variant:small-caps;*/
+ letter-spacing:2pt;
+}
+
+/* --------------- sidebar and content ---------------- */
+
+/* the document */
+div.dokuwiki div.page {
+ text-align: justify;
+
+ border-style : solid;
+ border-width: 1px 1px 1px 1px;
+ border-color: __border__ ;
+ background-color: __background__ ;
+ padding-right: 5px;
+ padding-left: 5px;
+ padding-bottom: 30px;
+
+ background-image: url(__rg_faded_background__);
+ background-repeat: no-repeat;
+ background-position: 98% 98%;
+
+}
+
+/* the sidebar */
+div.dokuwiki div.sidebar {
+ background-color: __rg_sidebar__ ;
+ border-style : solid;
+ border-width: 1px 1px 1px 1px;
+ border-color: __border__ ;
+ padding-top: 2px;
+ padding-bottom: 5px;
+
+ overflow: hidden;
+ font-size : 80% ;
+}
+
+/* the sidebar box */
+div.dokuwiki div.sidebarandshadows {
+ width: 100% ;
+ overflow: hidden;
+}
+
+/* the search box */
+div.dokuwiki div.searchbarandshadows {
+ margin-top: 4px ;
+}
+
+div.dokuwiki div.searchbar {
+ background-color: __rg_search__ ;
+ border-style : solid;
+ border-width: 1px 1px 1px 1px;
+ border-color: __rg_search_border__ ;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ text-align : left ;
+
+ font-size : 80% ;
+}
+
+/* the actions box */
+div.dokuwiki div.userbarandshadows {
+ margin-top: 4px ;
+}
+
+div.dokuwiki div.userbar {
+ background-color: __rg_userbar__ ;
+ border-style : solid;
+ border-width: 1px 1px 1px 1px;
+ border-color: __rg_userbar_border__ ;
+ padding-top: 4px;
+
+ font-size: 80% ;
+}
+
+div.dokuwiki div.userbarstrip {
+ background-color: __rg_userbar__ ;
+ border-style : solid;
+ border-width: 0px 0px 1px 0px;
+ border-color: __rg_userbar_border__ ;
+ padding-top: 4px;
+
+ font-variant:small-caps;
+ font-weight: bolder;
+ font-size: 100% ;
+ cursor: pointer;
+}
+
+div.dokuwiki div.userbarstrip:hover {
+ background-color: __rg_sidebar__ ;
+}
+
+/* the left column ( sidebar, search box, action box) */
+div.dokuwiki div.sideleft {
+ margin-top: 4px;
+ float: left;
+ clear: left ;
+ width: 18%;
+}
+
+div.dokuwiki div.sideright {
+ margin-top: 4px;
+ float: right;
+ clear: right ;
+ width: 18%;
+}
+
+
+/* the right column (main content) */
+div.dokuwiki div.mainright {
+ margin-top: 4px;
+ float: right;
+ clear: right;
+ width: 80% ;
+}
+
+div.dokuwiki div.mainleft {
+ margin-top: 4px;
+ float: left;
+ clear: left;
+ width: 80% ;
+}
+
+/* hack needed to avoid some unwanted extra space between boxes and their shadows */
+div.dokuwiki div.searchbarandshadows table,
+div.dokuwiki div.userbarandshadows table,
+div.dokuwiki div.sidebarandshadows table {
+ margin : 0;
+ padding: 0;
+}
+
+
+/* --------------- status bar ---------------- */
+div.dokuwiki .bar {
+ border-style : solid;
+ border-width: 1px 1px 1px 1px;
+ border-color: __rg_status_border__ ;
+ background-color: __rg_status_background__ ;
+ background-image: url(__rg_status_gradient__);
+ background-repeat: repeat-x;
+ margin-top: 2px;
+ height: 24px;
+ padding-top: 10px ;
+ width: 100%;
+ font-size : 80%;
+ clear: both;
+ overflow: hidden;
+ height: 34px;
+}
+
+div.dokuwiki .bar-left {
+ float: left;
+}
+
+div.dokuwiki .bar-right {
+ float: right;
+ text-align: right;
+}
+
+div.dokuwiki #bar__bottom {
+ margin-bottom:3px;
+}
+
+/* ------------- File Metadata ----------------------- */
+
+div.dokuwiki div.meta {
+ clear: both;
+ margin-top: 1em;
+ color: __text_alt__;
+ font-size: 70%;
+}
+
+div.dokuwiki div.meta div.user {
+ float: left;
+}
+
+div.dokuwiki div.meta div.doc {
+ text-align: right;
+}
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/main.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/main.php
new file mode 100644
index 00000000..5b66151f
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/main.php
@@ -0,0 +1,362 @@
+<?php
+/**
+ * DokuWiki Default Template
+ *
+ * This is the template you need to change for the overall look
+ * of DokuWiki.
+ *
+ * You should leave the doctype at the very top - It should
+ * always be the very first line of a document.
+ *
+ * @link http://wiki.splitbrain.org/wiki:tpl:templates
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Riccardo Govoni <battlehorse@gmail.com>
+ */
+
+// must be run from within DokuWiki
+if (!defined('DOKU_INC')) die();
+
+/* Creates the URL of the current page, used for Digg, delicious and google bookmarks */
+function selfURL() {
+ $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
+ $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
+ $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
+ return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
+}
+
+function strleft($s1, $s2) {
+ return substr($s1, 0, strpos($s1, $s2));
+}
+
+// verify if the given action is enabled
+function is_action_enabled($type) {
+ $ctype = $type;
+ if($type == 'history') $ctype='revisions';
+ return actionOK($ctype);
+}
+
+// changes the display style of the given action group, depending on the config file
+function action_group_status($groupname) {
+ if (tpl_getConf('btl_default_' . $groupname . '_actions_status') == "closed") {
+ echo " style='display:none;'" ;
+ }
+}
+
+// include functions that provide sidebar functionality
+@require_once(dirname(__FILE__).'/tplfn_sidebar.php');
+
+// include translations of the template strings
+@require_once(dirname(__FILE__).'/lang/'.tpl_getConf('btl_language').'/settings.php');
+
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang']?>"
+ lang="<?php echo $conf['lang']?>" dir="<?php echo $lang['direction']?>">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>
+ <?php tpl_pagetitle()?>
+ [<?php echo strip_tags($conf['title'])?>]
+ </title>
+
+ <?php tpl_metaheaders()?>
+
+ <link rel="shortcut icon" href="<?php echo DOKU_TPL?>images/favicon.ico" />
+
+ <?php /*old includehook*/ @include(dirname(__FILE__).'/meta.html')?>
+
+ <script src="<?php echo DOKU_TPL ?>js/prototype.js" type="text/javascript"></script>
+ <script src="<?php echo DOKU_TPL ?>js/scriptaculous.js" type="text/javascript"></script>
+</head>
+
+<body>
+<?php /*old includehook*/ @include(dirname(__FILE__).'/topheader.html')?>
+<div class="dokuwiki">
+ <?php html_msgarea()?>
+
+ <div class="stylehead">
+
+ <div class="header">
+<!-- <div class="pagename">
+ [[<?php tpl_link(wl($ID,'do=backlink'),tpl_pagetitle($ID,true))?>]]
+ </div> -->
+ <div class="logo">
+ <?php tpl_link(wl(),$conf['title'],'name="dokuwiki__top" id="dokuwiki__top" accesskey="h" title="[ALT+H]"')?>
+ </div>
+
+ <div class="clearer"></div>
+ </div>
+
+ <?php /*old includehook*/ @include(dirname(__FILE__).'/header.html')?>
+
+ <?php if($conf['breadcrumbs']){?>
+ <div class="bread_upper_dark"></div>
+ <div class="breadcrumbs">
+ <?php tpl_breadcrumbs()?>
+ <?php //tpl_youarehere() //(some people prefer this)?>
+ </div>
+ <div class="bread_lower_dark"></div>
+ <div class="bread_lower_medium"></div>
+ <div class="bread_lower_light">&nbsp;</div>
+ <?php }?>
+
+ <?php if($conf['youarehere']){?>
+ <div class="bread_upper_dark"></div>
+ <div class="breadcrumbs">
+ <?php tpl_youarehere() ?>
+ </div>
+ <div class="bread_lower_dark"></div>
+ <div class="bread_lower_medium"></div>
+ <div class="bread_lower_light"></div>
+ <?php }?>
+
+ </div>
+ <?php flush()?>
+
+ <?php /*old includehook*/ @include(dirname(__FILE__).'/pageheader.html')?>
+
+<div class="sideandpage" >
+ <?php if (tpl_getConf('btl_sidebar_position') == "right") { ?>
+ <div class="mainleft" >
+ <div class="page">
+ <!-- wikipage start -->
+ <?php tpl_content()?>
+ <!-- wikipage stop -->
+ </div>
+ <div class="page_lower_dark"></div>
+ <div class="page_lower_medium"></div>
+ <div class="page_lower_light"></div>
+ </div>
+ <?php } ?>
+
+ <?php if (tpl_getConf('btl_sidebar_position') == "right") { ?>
+ <div class="sideright">
+ <?php } else { ?>
+ <div class="sideleft">
+ <?php } ?>
+
+ <div class="sidebarandshadows" >
+ <table cellspacing="0" cellpadding="0" border="0" width="100%" >
+ <tr>
+ <td>
+ <table cellspacing="0" cellpadding="0" border="0" width="100%">
+ <tr>
+ <td valign="top">
+ <div class="sidebar">
+ <?php tpl_sidebar()?>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td class="page_lower_dark" style="width: 1px"></td>
+ <td class="page_lower_medium" style="width: 1px"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_dark" style="height: 1px" colspan="2"></td>
+ <td class="page_lower_medium" style="width: 1px"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_medium" style="height: 1px" colspan="3"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_light" style="height: 1px" colspan="4"></td>
+ </tr>
+ </table>
+ </div>
+
+ <?php if (is_action_enabled('search')) { ?>
+ <div class="searchbarandshadows" >
+ <table cellspacing="0" cellpadding="0" border="0" width="100%" >
+ <tr>
+ <td>
+ <table cellspacing="0" cellpadding="0" border="0" width="100%" >
+ <tr>
+ <td valign="top">
+ <div class="searchbar">
+ <div class="centeralign"><?php tpl_searchform()?></div>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td class="page_lower_dark" style="width: 1px"></td>
+ <td class="page_lower_medium" style="width: 1px"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_dark" style="height: 1px" colspan="2"></td>
+ <td class="page_lower_medium" style="width: 1px"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_medium" style="height: 1px" colspan="3"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_light" style="height: 1px" colspan="4"></td>
+ </tr>
+ </table>
+ </div>
+ <?php } ?>
+
+ <div class="userbarandshadows" >
+ <table cellspacing="0" cellpadding="0" border="0" width="100%" >
+ <tr>
+ <td>
+ <table cellspacing="0" cellpadding="0" border="0" width="100%">
+ <tr>
+ <td valign="top">
+ <div class="userbar" >
+ <?php if (tpl_getConf('btl_action_palette') && (is_action_enabled('history') || is_action_enabled('backlink') || (is_action_enabled('edit') && (!$conf['useacl'] || $ACT != 'show' || ($conf['useacl'] && $_SERVER['REMOTE_USER']))))) { ?>
+ <div class="userbarstrip" onclick="Effect.toggle('pageActionTableId','slide')"><?php echo $lang['btl_strip_page_actions']; ?></div>
+ <?php } ?>
+ <div id="pageActionTableId" <?php action_group_status('page'); ?> ><div>
+ <table cellspacing="0" cellpadding="2" border="0" width="100%" >
+ <tr><td>
+ <?php if (is_action_enabled('history')) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('history')?></div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('backlink')) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('backlink')?></div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('edit')) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('edit')?></div></td></tr><tr><td>
+ <?php } ?>
+ </td></tr></table></div></div>
+ <?php if (tpl_getConf('btl_action_palette') && (is_action_enabled('index') || is_action_enabled('recent') || (is_action_enabled('admin') && $INFO['perm'] == 255 ))) { ?>
+ <div class="userbarstrip" onclick="Effect.toggle('wikiActionTableId','slide')"><?php echo $lang['btl_strip_wiki_actions']; ?></div>
+ <?php } ?>
+ <div id="wikiActionTableId" <?php action_group_status('wiki'); ?> ><div>
+ <table cellspacing="0" cellpadding="2" border="0" width="100%" >
+ <tr><td>
+ <?php if (is_action_enabled('index')) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('index')?></div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('recent')) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('recent')?></div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('admin') && $INFO['perm'] == 255) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('admin') ?></div></td></tr><tr><td>
+ <?php } ?>
+ </td></tr></table></div></div>
+ <?php if (tpl_getConf('btl_action_palette') && (is_action_enabled('login') || (is_action_enabled('profile') && $_SERVER['REMOTE_USER'] ) || (is_action_enabled('subscribe') && $conf['useacl'] && $ACT == 'show' && $conf['subscribers'] == 1 && $_SERVER['REMOTE_USER']))) { ?>
+ <div class="userbarstrip" onclick="Effect.toggle('userActionTableId','slide')"><?php echo $lang['btl_strip_user_actions']; ?></div>
+ <?php } ?>
+ <div id="userActionTableId" <?php action_group_status('user'); ?> ><div>
+ <table cellspacing="0" cellpadding="2" border="0" width="100%" >
+ <tr><td>
+ <?php if (is_action_enabled('login')) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('login')?>
+ <?php
+ if ($_SERVER['REMOTE_USER']){
+ echo $INFO['userinfo']['name'] ;
+ }
+ ?>
+ </div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('profile') && $_SERVER['REMOTE_USER']) { ?>
+ <div class="smallpadding"><?php tpl_actionlink('profile') ?></div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('subscribe')) { ?>
+ <?php if($conf['useacl'] && $ACT == 'show' && $conf['subscribers'] == 1 && $_SERVER['REMOTE_USER']){ ?>
+ <div class="smallpadding"><?php tpl_actionlink('subscribe')?></div></td></tr><tr><td>
+ <?php } ?>
+ <?php } ?>
+ </td></tr></table></div></div>
+ <?php if (tpl_getConf('btl_action_palette') && (is_action_enabled('digg') || is_action_enabled('delicious') || is_action_enabled('googlebookmark'))) { ?>
+ <div class="userbarstrip" onclick="Effect.toggle('submitActionTableId','slide')"><?php echo $lang['btl_strip_submit_actions']; ?></div>
+ <?php } ?>
+ <div id="submitActionTableId" <?php action_group_status('submit'); ?> ><div>
+ <table cellspacing="0" cellpadding="2" border="0" width="100%" >
+ <tr><td>
+ <?php if (is_action_enabled('digg')) { ?>
+ <div class="smallpadding"><a class="digg" href="<?php echo 'http://digg.com/submit?phase=2&amp;url='.urlencode(selfURL()).'&amp;title='?><?php echo urlencode(tpl_pagetitle())?>">Digg this!</a></div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('delicious')) { ?>
+ <div class="smallpadding"><a class="delicious" href="<?php echo 'http://del.icio.us/post?url='.urlencode(selfURL()).'&amp;title='?><?php echo urlencode(tpl_pagetitle())?>">Del.Icio.Us</a></div></td></tr><tr><td>
+ <?php } ?>
+ <?php if (is_action_enabled('googlebookmark')) { ?>
+ <div class="smallpadding"><a class="googlebookmark" href="<?php echo 'http://www.google.com/bookmarks/mark?op=add&amp;bkmk='.urlencode(selfURL()).'&amp;title='?><?php echo urlencode(tpl_pagetitle())?>">Google bookmark</a></div></td></tr><tr><td>
+ <?php } ?>
+ </td></tr>
+ </table></div></div>
+
+ </div>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td class="page_lower_dark" style="width: 1px"></td>
+ <td class="page_lower_medium" style="width: 1px"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_dark" style="height: 1px" colspan="2"></td>
+ <td class="page_lower_medium" style="width: 1px"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_medium" style="height: 1px" colspan="3"></td>
+ <td class="page_lower_light" style="width: 1px"></td>
+ </tr>
+ <tr>
+ <td class="page_lower_light" style="height: 1px" colspan="4"></td>
+ </tr>
+ </table>
+ </div>
+
+ </div>
+ <?php if (tpl_getConf('btl_sidebar_position') == "left") { ?>
+ <div class="mainright" >
+ <div class="page">
+ <!-- wikipage start -->
+ <?php tpl_content()?>
+ <!-- wikipage stop -->
+ </div>
+ <div class="page_lower_dark"></div>
+ <div class="page_lower_medium"></div>
+ <div class="page_lower_light"></div>
+ </div>
+ <?php } ?>
+ <div class="clearer">&nbsp;</div>
+</div>
+
+ <?php flush()?>
+
+ <div class="stylefoot">
+
+ <div class="meta">
+ <div class="user">
+ <?php tpl_userinfo()?>
+ </div>
+ <div class="doc">
+ <?php tpl_pageinfo()?> &nbsp;
+ <span class="doclink">
+ &nbsp;
+ <?php tpl_actionlink('top') ?>
+ </span>
+ </div>
+ </div>
+
+ <?php /*old includehook*/ @include(dirname(__FILE__).'/pagefooter.html')?>
+
+ <div class="bar" id="bar__bottom">
+
+ <?php /*old includehook*/ @include(dirname(__FILE__).'/footer.html')?>
+
+ <div class="clearer"></div>
+ </div>
+
+ </div>
+
+</div>
+
+<div class="no"><?php /* provide DokuWiki housekeeping, required in all templates */ tpl_indexerWebBug()?></div>
+</body>
+</html>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/media.css b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/media.css
new file mode 100644
index 00000000..e2a80ff8
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/media.css
@@ -0,0 +1,204 @@
+/**
+ * The CSS in here cotrols the appearance of the media manager
+ */
+
+#media__manager {
+ height: 100%;
+ overflow: hidden;
+}
+
+#media__left {
+ width: 30%;
+ border-right: solid 1px __border__;
+
+ height: 100%;
+ overflow: auto;
+ position: absolute;
+ left: 0;
+}
+
+#media__right {
+ width: 69.7%;
+
+ height: 100%;
+ overflow: auto;
+ position: absolute;
+ right: 0;
+}
+
+#media__manager h1 {
+ margin: 0;
+ padding: 0;
+ margin-bottom: 0.5em;
+}
+
+/* --- Tree formatting --- */
+
+#media__tree img {
+ float:left;
+ padding: 0.5em 0.3em 0 0;
+}
+
+#media__tree ul {
+ list-style-type: none;
+ list-style-image: none;
+}
+
+#media__tree li {
+ clear: left;
+ list-style-type: none;
+ list-style-image: none;
+}
+* html #media__tree li {
+ border: 1px solid __background__;
+}/* I don't understand this, but this fixes a style bug in IE;
+it's dirty, so any "real" fixes are welcome */
+
+/* --- options --- */
+
+#media__opts {
+ padding-left: 1em;
+ margin-bottom: 0.5em;
+}
+
+#media__opts input {
+ float: left;
+ position: absolute;
+}
+* html #media__opts input {
+ position: static;
+}
+
+#media__opts label {
+ display: block;
+ float: left;
+ margin-left: 30px;
+}
+* html #media__opts label {
+ margin-left: 10px;
+}
+
+#media__opts br {
+ clear: left;
+}
+
+/* --- file list --- */
+
+#media__content img.load {
+ margin: 1em auto;
+}
+
+#media__content #scroll__here {
+ border: 1px dashed __border__;
+}
+
+#media__content .odd {
+ background-color: __background_other__;
+ padding: 0.4em;
+}
+
+#media__content .even {
+ padding: 0.4em;
+}
+
+#media__content a.mediafile {
+ margin-right: 1.5em;
+ font-weight: bold;
+}
+
+#media__content div.detail {
+ padding: 0.3em 0 0.3em 2em;
+}
+
+#media__content div.detail div.thumb {
+ float: left;
+ width: 130px;
+ text-align: center;
+ margin-right: 0.4em;
+}
+
+
+#media__content img.btn {
+ vertical-align: text-bottom;
+}
+
+#media__content div.example {
+ color: __text_neu__;
+ margin-left: 1em;
+}
+
+/* --- upload form --- */
+
+#media__content div.upload {
+ font-size: 90%;
+ padding: 0 0.5em 0.5em 0.5em;
+}
+
+#media__content form.upload {
+ display: block;
+ border-bottom: solid 1px __border__;
+ padding: 0 0.5em 1em 0.5em;
+}
+#media__content form.upload fieldset {
+ padding: 0;
+ margin: 0;
+ border: none;
+ width: auto;
+}
+#media__content form.upload p {
+ clear: left;
+ text-align: left;
+ padding: 0.25em 0;
+ margin: 0;
+ line-height: 1.0em;
+}
+#media__content form.upload label {
+ float: left;
+ width: 30%;
+}
+#media__content form.upload label.check {
+ float: none;
+ width: auto;
+}
+#media__content form.upload input.check {
+ margin-left: 30%;
+}
+
+/* --- meta edit form --- */
+
+#media__content form.meta {
+ display: block;
+ padding: 0 0 1em 0;
+}
+
+#media__content form.meta label {
+ display: block;
+ width: 25%;
+ float: left;
+ font-weight: bold;
+ margin-left: 1em;
+ clear: left;
+}
+
+#media__content form.meta .edit {
+ font: 100% "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
+ float: left;
+ width: 70%;
+ padding-right: 0;
+ padding-left: 0.2em;
+ margin: 2px;
+}
+
+#media__content form.meta textarea.edit {
+ height: 8em;
+}
+
+#media__content form.meta div.metafield {
+ clear: left;
+}
+
+#media__content form.meta div.buttons {
+ clear: left;
+ margin-left: 20%;
+ padding-left: 1em;
+}
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/mediamanager.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/mediamanager.php
new file mode 100644
index 00000000..1da6dfd0
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/mediamanager.php
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<?php
+/**
+ * DokuWiki Default Template
+ *
+ * This is the template for the media manager popup
+ *
+ * You should leave the doctype at the very top - It should
+ * always be the very first line of a document.
+ *
+ * @link http://wiki.splitbrain.org/wiki:tpl:templates
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+?>
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang']?>" lang="<?php echo $conf['lang']?>" dir="ltr">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>
+ <?php echo hsc($lang['mediaselect'])?>
+ [<?php echo strip_tags($conf['title'])?>]
+ </title>
+ <?php tpl_metaheaders()?>
+ <link rel="shortcut icon" href="<?php echo DOKU_TPL?>images/favicon.ico" />
+</head>
+
+<body>
+<div id="media__manager" class="dokuwiki">
+ <div id="media__left">
+ <?php html_msgarea()?>
+ <h1><?php echo hsc($lang['mediaselect'])?></h1>
+
+ <?php /* keep the id! additional elements are inserted via JS here */?>
+ <div id="media__opts"></div>
+
+ <?php tpl_mediaTree() ?>
+ </div>
+
+ <div id="media__right">
+ <?php tpl_mediaContent() ?>
+ </div>
+</div>
+</body>
+</html>
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/print.css b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/print.css
new file mode 100644
index 00000000..70f7834e
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/print.css
@@ -0,0 +1,236 @@
+
+body {
+ font: 10pt "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
+ background-color: White;
+ color: Black;
+}
+
+table {
+ font-size: 100%;
+ padding:0;
+ margin:0;
+}
+
+tr,td,th {padding:0; margin:0;}
+
+img {border:0}
+
+a {
+ color:#000000;
+ text-decoration:none;
+ background: none !important;
+}
+
+
+div.meta {
+ clear:both;
+ margin-top: 1em;
+ font-size:70%;
+ text-align:right;
+}
+
+div.breadcrumbs{
+ display:none;
+}
+
+div.secedit{
+ display:none;
+}
+
+/* --------------------- Text formating -------------------------------- */
+
+/* external link */
+a.urlextern:after {
+ content: " [" attr(href) "]";
+ font-size: 90%;
+}
+
+/* interwiki link */
+a.interwiki:after {
+ content: " [" attr(href) "]";
+ font-size: 90%;
+}
+
+/* email link */
+a.mail:after {
+ content: " [" attr(href) "]";
+ font-size: 90%;
+}
+
+/* existing wikilink */
+a.wikilink1 {text-decoration:underline }
+
+/* the document */
+div.page {
+ text-align: justify;
+}
+
+/* general headline setup */
+h1, h2, h3, h4, h5 {
+ color: Black;
+ background-color: transparent;
+ font-family: "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
+ font-size: 100%;
+ font-weight: normal;
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: 0;
+ margin-bottom: 1em;
+ padding-left: 0;
+ padding-right: 0;
+ padding-top: 0.5em;
+ padding-bottom: 0;
+ border-bottom: 1px solid #000000;
+ clear:left;
+}
+
+/* special headlines */
+h1 {font-size: 160%; font-weight: bold;}
+h2 {font-size: 150%; }
+h3 {font-size: 140%; border-bottom: none; }
+h4 {font-size: 120%; border-bottom: none; }
+h5 {font-size: 100%; border-bottom: none; }
+
+/* embedded images */
+img.media {
+ margin: 3px;
+}
+
+img.medialeft {
+ border: 0;
+ float: left;
+ margin: 0 1.5em 0 0;
+}
+
+img.mediaright {
+ border: 0;
+ float: right;
+ margin: 0 0 0 1.5em;
+}
+
+/* unordered lists */
+ul {
+ line-height: 1.5em;
+ list-style-type: square;
+ margin: 0 0 0.5em 1.5em;
+ padding: 0;
+
+}
+
+/* ordered lists */
+ol {
+ line-height: 1.5em;
+ margin: 0 0 0.5em 2.5em;
+ padding: 0;
+ font-weight: normal;
+}
+ol ol {
+ margin: 0 0 0.5em 1.5em;
+}
+
+div.dokuwiki ol {list-style-type: decimal}
+div.dokuwiki ol ol {list-style-type: upper-roman}
+div.dokuwiki ol ol ol {list-style-type: lower-alpha}
+div.dokuwiki ol ol ol ol {list-style-type: lower-greek}
+
+/* the list items overriding the ol definition */
+span.li {
+ font-weight: normal;
+}
+
+/* code blocks by indention */
+pre.pre {
+ font-size: 8pt;
+ padding: 0.5em;
+ border: 1px dashed #000000;
+ color: Black;
+ overflow: visible;
+}
+
+/* code blocks by code tag */
+pre.code {
+ font-size: 8pt;
+ padding: 0.5em;
+ border: 1px dashed #000000;
+ color: Black;
+ overflow: visible;
+}
+
+/* inline code words */
+code {
+ font-size: 120%;
+}
+
+/* code blocks by file tag */
+pre.file {
+ font-size: 8pt;
+ padding: 0.5em;
+ border: 1px dotted #000000;
+ color: Black;
+ overflow: visible;
+}
+
+/* footnotes */
+div.footnotes{
+ clear:both;
+ border-top: 1px solid #000000;
+ padding-left: 1em;
+ margin-top: 1em;
+}
+
+div.fn{
+ font-size:90%;
+}
+
+a.fn_top{
+ vertical-align:super;
+ font-size:80%;
+}
+
+a.fn_bot{
+ vertical-align:super;
+ font-size:80%;
+ font-weight:bold;
+}
+
+acronym{
+ border: 0;
+}
+
+/* ---------- inline tables ------------------- */
+
+table.inline {
+ font-size: 80%;
+ background-color: #ffffff;
+ border-spacing: 0px;
+ border-collapse: collapse;
+}
+
+table.inline th {
+ padding: 3px;
+ border: 1px solid #000000;
+ border-bottom: 2px solid #000000;
+}
+
+table.inline td {
+ padding: 3px;
+ border: 1px solid #000000;
+}
+
+.leftalign{
+ text-align: left;
+}
+
+.centeralign{
+ text-align: center;
+}
+
+.rightalign{
+ text-align: right;
+}
+
+.toc, .footerinc, .header, .bar, .user , .sideright , .sideleft , .doclink {display:none}
+
+div.doc { text-align: left; }
+
+#sidebar {display:none}
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/rtl.css b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/rtl.css
new file mode 100644
index 00000000..d5061435
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/rtl.css
@@ -0,0 +1,111 @@
+/**
+ * Layout and dedsign corrections for right-to-left languages
+ *
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Dotan Kamber <kamberd@yahoo.com>
+ */
+
+.bar-left {
+ float: right;
+ text-align: right;
+}
+
+.bar-right {
+ float: left;
+ text-align: left;
+}
+
+.pagename {
+ float: right;
+ text-align: right;
+}
+
+.logo {
+ float: left;
+ text-align: left;
+}
+
+label {
+ text-align: left;
+}
+
+label.simple {
+ text-align: right;
+}
+
+div.meta div.user {
+ float: right
+}
+
+div.meta div.doc {
+ text-align: left;
+}
+
+/* ------------------ Design corrections --------------------------------- */
+
+ul, ol {
+ margin: 0.5em 1.5em 0.5em 0;
+}
+
+a.urlextern,a.interwiki,a.windows{
+ /* should work but doesn't - so we just disable icons here*/
+ /*
+ background-position: right 1px;
+ padding-right: 16px;
+ */
+ background-image: none !important;
+ padding: 0;
+}
+
+div.secedit input.button {
+ float: left;
+}
+
+/* headlines */
+h1, h2, h3, h4, h5 {
+ clear: right;
+}
+
+/* special headlines */
+h1 {margin-left: 0px; margin-right: 0px;}
+h2 {margin-left: 0px; margin-right: 20px;}
+h3 {margin-left: 0px; margin-right: 40px;}
+h4 {margin-left: 0px; margin-right: 60px;}
+h5 {margin-left: 0px; margin-right: 80px;}
+
+/* indent different sections */
+div.level1 {margin-left: 0px; margin-right: 3px;}
+div.level2 {margin-left: 0px; margin-right: 23px;}
+div.level3 {margin-left: 0px; margin-right: 43px;}
+div.level4 {margin-left: 0px; margin-right: 63px;}
+div.level5 {margin-left: 0px; margin-right: 83px;}
+
+/* TOC control */
+div.toc {
+ float: left;
+ margin-left: 0;
+ margin-right: 2em;
+}
+
+div.tocheader {
+ text-align: right;
+}
+
+#tocinside {
+ text-align: right;
+}
+
+ul.toc {
+ padding: 0;
+ padding-right: 1em;
+}
+
+ul.toc li {
+ background-position: right 0.6em;
+ padding-right:0.4em;
+}
+
+ul.toc li.clear {
+ padding-right:0.4em;
+}
+
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style.ini b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style.ini
new file mode 100644
index 00000000..0d031385
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style.ini
@@ -0,0 +1,147 @@
+; Please see http://www.php.net/manual/en/function.parse-ini-file.php
+; for limitations of the ini format used here
+
+; Define the stylesheets your template uses here. The second value
+; defines for which output media the style should be loaded. Currently
+; print, screen and rtl are supported. rtl styles are loaded additionally
+; to screen styles if a right-to-left language is selected (eg. hebrew)
+[stylesheets]
+layout.css = screen
+design.css = screen
+style.css = screen
+
+media.css = screen
+
+rtl.css = rtl
+print.css = print
+
+; This section is used to configure some placeholder values used in
+; the stylesheets. Changing this file is the simplest method to
+; give your wiki a new look.
+[replacements]
+
+;--------------------------------------------------------------------------
+;------ guaranteed dokuwiki color placeholders that every plugin can use
+; main text and background colors
+__text__ = "#000"
+__background__ = "#fff"
+; alternative text and background colors
+__text_alt__ = "#0d2264"
+__background_alt__ = "#b7d7ff"
+; neutral text and background colors
+__text_neu__ = "#666"
+__background_neu__ = "#f5f5f5"
+; border color
+__border__ = "#0d2264"
+;--------------------------------------------------------------------------
+
+; other text and background colors
+__text_other__ = "#0d2264"
+__background_other__ = "#e9f2f4"
+
+; these are used for links
+__extern__ = "#08279a"
+__existing__ = "#08279a"
+__missing__ = "#e8530a"
+__visited__ = "#08279a"
+__hover__ = "#7189e0"
+
+; highlighting search snippets
+__highlight__ = "#b7d7ff"
+
+
+;--------------------------------------------------------------------------
+;------ for keeping old templates and plugins compatible to the old pattern
+; (to be deleted at the next or after next release)
+__white__ = "#fff"
+__lightgray__ = "#f5f5f5"
+__mediumgray__ = "#ccc"
+__darkgray__ = "#666"
+__black__ = "#000"
+
+; these are the shades of main template color (green)
+__lighter__ = "#f8f8f8"
+__light__ = "#e9f2f4"
+__medium__ = "#b7d7ff"
+__dark__ = "#5d6fa9"
+__darker__ = "#0d2264"
+
+; additional info, used by the battlehorse template
+
+; background color for the website (the one outside the main content)
+__rg_background__ = "#e9f2f4"
+
+; the color used for the site title
+__rg_logo_color__ = "#ffffff"
+
+; the shadows used for the breadcrumbs bar and main content area
+__rg_bread_upper_dark__ = "#43579a"
+__rg_bread_lower_dark__ = "#43579a"
+__rg_bread_lower_medium__ = "#8291bf"
+__rg_bread_lower_light__ = "#d9ddea"
+
+; the border for the breadcrumbs bar
+__rg_bread_border__ = "#cfcfcf"
+
+; the background and border for code and file snippets (see wiki:syntax)
+__rg_code__ = "#f8f8f8"
+__rg_code_border__ = "#cfcfcf"
+__rg_file__ = "#fffded"
+__rg_file_border__ = "#fffaa9"
+
+; the background and border for the search box
+__rg_search__ = "#f8f8f8"
+__rg_search_border__ = "#cfcfcf"
+
+; the background and border for the status box
+__rg_status_border__ = "#cfcfcf"
+__rg_status_background__ = "#e5e5e4"
+
+; the background and border for the actions box
+__rg_userbar__ = "#f8f8f8"
+__rg_userbar_border__ = "#cfcfcf"
+
+; the background for the sidebar box
+__rg_sidebar__ = "#e8f2ff"
+
+; the background and prelight (when you hover on the button) colors for buttons
+__rg_button_prelight__ = "#dbe9ff"
+__rg_button_background__ = "#9cc4ff"
+
+; images used for the user actions ( should be at most 24x24 pixels , otherwise edit the design.css)
+__rg_recent_action__ = "images/b/actions/recent.png"
+__rg_edit_action__ = "images/b/actions/edit.png"
+__rg_index_action__ = "images/b/actions/index.png"
+__rg_create_action__ = "images/b/actions/create.png"
+__rg_revision_action__ = "images/b/actions/history.png"
+__rg_backlink_action__ = "images/b/actions/backlink.png"
+__rg_login_action__ = "images/b/actions/login.png"
+__rg_subscribe_action__ = "images/b/actions/subscribe.png"
+__rg_unsubscribe_action__ = "images/b/actions/unsubscribe.png"
+__rg_profile_action__ = "images/b/actions/profile.png"
+__rg_admin_action__ = "images/b/actions/admin.png"
+__rg_show_action__ = "images/b/actions/show.png"
+__rg_previous_action__ = "images/b/actions/previous.png"
+__rg_top_action__ = "images/b/actions/top.png"
+__rg_digg_action__ = "images/b/actions/digg.gif"
+__rg_delicious_action__ = "images/b/actions/delicious.gif"
+__rg_google_action__ = "images/b/actions/google.gif"
+
+; the gradient used for the background panel (should have width 1 px )
+__rg_background_gradient__ = "images/b/gradient_background.png"
+
+; the gradient used for the breadcrumbs bar ( should have width 1px and height 17px )
+__rg_breadcrumbs_gradient__ = "images/b/gradient_bc.png"
+
+; the gradient for the logo bar ( should have width 1px and height 57px )
+__rg_logo_gradient__ = "images/b/gradient_logo.png"
+
+; the main wiki logo (upper left corner of the page) (should have height 57px )
+__rg_wiki_logo__ = "images/b/wiki_logo.png"
+
+; a faded version of the logo, which will be located on the lower right corner of the main content area (no size restrictions)
+__rg_faded_background__ = "images/b/faded_background.png"
+
+; the gradient for the status bar (should have width 1px and height 34px )
+__rg_status_gradient__ = "images/b/gradient_status.png"
+
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_blue.ini b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_blue.ini
new file mode 100644
index 00000000..0d031385
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_blue.ini
@@ -0,0 +1,147 @@
+; Please see http://www.php.net/manual/en/function.parse-ini-file.php
+; for limitations of the ini format used here
+
+; Define the stylesheets your template uses here. The second value
+; defines for which output media the style should be loaded. Currently
+; print, screen and rtl are supported. rtl styles are loaded additionally
+; to screen styles if a right-to-left language is selected (eg. hebrew)
+[stylesheets]
+layout.css = screen
+design.css = screen
+style.css = screen
+
+media.css = screen
+
+rtl.css = rtl
+print.css = print
+
+; This section is used to configure some placeholder values used in
+; the stylesheets. Changing this file is the simplest method to
+; give your wiki a new look.
+[replacements]
+
+;--------------------------------------------------------------------------
+;------ guaranteed dokuwiki color placeholders that every plugin can use
+; main text and background colors
+__text__ = "#000"
+__background__ = "#fff"
+; alternative text and background colors
+__text_alt__ = "#0d2264"
+__background_alt__ = "#b7d7ff"
+; neutral text and background colors
+__text_neu__ = "#666"
+__background_neu__ = "#f5f5f5"
+; border color
+__border__ = "#0d2264"
+;--------------------------------------------------------------------------
+
+; other text and background colors
+__text_other__ = "#0d2264"
+__background_other__ = "#e9f2f4"
+
+; these are used for links
+__extern__ = "#08279a"
+__existing__ = "#08279a"
+__missing__ = "#e8530a"
+__visited__ = "#08279a"
+__hover__ = "#7189e0"
+
+; highlighting search snippets
+__highlight__ = "#b7d7ff"
+
+
+;--------------------------------------------------------------------------
+;------ for keeping old templates and plugins compatible to the old pattern
+; (to be deleted at the next or after next release)
+__white__ = "#fff"
+__lightgray__ = "#f5f5f5"
+__mediumgray__ = "#ccc"
+__darkgray__ = "#666"
+__black__ = "#000"
+
+; these are the shades of main template color (green)
+__lighter__ = "#f8f8f8"
+__light__ = "#e9f2f4"
+__medium__ = "#b7d7ff"
+__dark__ = "#5d6fa9"
+__darker__ = "#0d2264"
+
+; additional info, used by the battlehorse template
+
+; background color for the website (the one outside the main content)
+__rg_background__ = "#e9f2f4"
+
+; the color used for the site title
+__rg_logo_color__ = "#ffffff"
+
+; the shadows used for the breadcrumbs bar and main content area
+__rg_bread_upper_dark__ = "#43579a"
+__rg_bread_lower_dark__ = "#43579a"
+__rg_bread_lower_medium__ = "#8291bf"
+__rg_bread_lower_light__ = "#d9ddea"
+
+; the border for the breadcrumbs bar
+__rg_bread_border__ = "#cfcfcf"
+
+; the background and border for code and file snippets (see wiki:syntax)
+__rg_code__ = "#f8f8f8"
+__rg_code_border__ = "#cfcfcf"
+__rg_file__ = "#fffded"
+__rg_file_border__ = "#fffaa9"
+
+; the background and border for the search box
+__rg_search__ = "#f8f8f8"
+__rg_search_border__ = "#cfcfcf"
+
+; the background and border for the status box
+__rg_status_border__ = "#cfcfcf"
+__rg_status_background__ = "#e5e5e4"
+
+; the background and border for the actions box
+__rg_userbar__ = "#f8f8f8"
+__rg_userbar_border__ = "#cfcfcf"
+
+; the background for the sidebar box
+__rg_sidebar__ = "#e8f2ff"
+
+; the background and prelight (when you hover on the button) colors for buttons
+__rg_button_prelight__ = "#dbe9ff"
+__rg_button_background__ = "#9cc4ff"
+
+; images used for the user actions ( should be at most 24x24 pixels , otherwise edit the design.css)
+__rg_recent_action__ = "images/b/actions/recent.png"
+__rg_edit_action__ = "images/b/actions/edit.png"
+__rg_index_action__ = "images/b/actions/index.png"
+__rg_create_action__ = "images/b/actions/create.png"
+__rg_revision_action__ = "images/b/actions/history.png"
+__rg_backlink_action__ = "images/b/actions/backlink.png"
+__rg_login_action__ = "images/b/actions/login.png"
+__rg_subscribe_action__ = "images/b/actions/subscribe.png"
+__rg_unsubscribe_action__ = "images/b/actions/unsubscribe.png"
+__rg_profile_action__ = "images/b/actions/profile.png"
+__rg_admin_action__ = "images/b/actions/admin.png"
+__rg_show_action__ = "images/b/actions/show.png"
+__rg_previous_action__ = "images/b/actions/previous.png"
+__rg_top_action__ = "images/b/actions/top.png"
+__rg_digg_action__ = "images/b/actions/digg.gif"
+__rg_delicious_action__ = "images/b/actions/delicious.gif"
+__rg_google_action__ = "images/b/actions/google.gif"
+
+; the gradient used for the background panel (should have width 1 px )
+__rg_background_gradient__ = "images/b/gradient_background.png"
+
+; the gradient used for the breadcrumbs bar ( should have width 1px and height 17px )
+__rg_breadcrumbs_gradient__ = "images/b/gradient_bc.png"
+
+; the gradient for the logo bar ( should have width 1px and height 57px )
+__rg_logo_gradient__ = "images/b/gradient_logo.png"
+
+; the main wiki logo (upper left corner of the page) (should have height 57px )
+__rg_wiki_logo__ = "images/b/wiki_logo.png"
+
+; a faded version of the logo, which will be located on the lower right corner of the main content area (no size restrictions)
+__rg_faded_background__ = "images/b/faded_background.png"
+
+; the gradient for the status bar (should have width 1px and height 34px )
+__rg_status_gradient__ = "images/b/gradient_status.png"
+
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_green.ini b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_green.ini
new file mode 100644
index 00000000..6973547b
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_green.ini
@@ -0,0 +1,147 @@
+; Please see http://www.php.net/manual/en/function.parse-ini-file.php
+; for limitations of the ini format used here
+
+; Define the stylesheets your template uses here. The second value
+; defines for which output media the style should be loaded. Currently
+; print, screen and rtl are supported. rtl styles are loaded additionally
+; to screen styles if a right-to-left language is selected (eg. hebrew)
+[stylesheets]
+layout.css = screen
+design.css = screen
+style.css = screen
+
+media.css = screen
+
+rtl.css = rtl
+print.css = print
+
+; This section is used to configure some placeholder values used in
+; the stylesheets. Changing this file is the simplest method to
+; give your wiki a new look.
+[replacements]
+
+;--------------------------------------------------------------------------
+;------ guaranteed dokuwiki color placeholders that every plugin can use
+; main text and background colors
+__text__ = "#000"
+__background__ = "#fff"
+; alternative text and background colors
+__text_alt__ = "#225c05"
+__background_alt__ = "#91e369"
+; neutral text and background colors
+__text_neu__ = "#666"
+__background_neu__ = "#f5f5f5"
+; border color
+__border__ = "#53bc1f"
+;--------------------------------------------------------------------------
+
+; other text and background colors
+__text_other__ = "#225c05"
+__background_other__ = "#f3ffe3"
+
+; these are used for links
+__extern__ = "#225c05"
+__existing__ = "#225c05"
+__missing__ = "#bc08c3"
+__visited__ = "#225c05"
+__hover__ = "#53bc1f"
+
+; highlighting search snippets
+__highlight__ = "#91e369"
+
+
+;--------------------------------------------------------------------------
+;------ for keeping old templates and plugins compatible to the old pattern
+; (to be deleted at the next or after next release)
+__white__ = "#fff"
+__lightgray__ = "#f5f5f5"
+__mediumgray__ = "#ccc"
+__darkgray__ = "#666"
+__black__ = "#000"
+
+; these are the shades of main template color (green)
+__lighter__ = "#f8f8f8"
+__light__ = "#f3ffe3"
+__medium__ = "#91e369"
+__dark__ = "#53bc1f"
+__darker__ = "#225c05"
+
+; additional info, used by the battlehorse template
+
+; background color for the website (the one outside the main content)
+__rg_background__ = "#f3ffe3"
+
+; the color used for the site title
+__rg_logo_color__ = "#000000"
+
+; the shadows used for the breadcrumbs bar and main content area
+__rg_bread_upper_dark__ = "#9f9f9f"
+__rg_bread_lower_dark__ = "#b9c2ad"
+__rg_bread_lower_medium__ = "#d6e0c8"
+__rg_bread_lower_light__ = "#e7f2d8"
+
+; the border for the breadcrumbs bar
+__rg_bread_border__ = "#cfcfcf"
+
+; the background and border for code and file snippets (see wiki:syntax)
+__rg_code__ = "#f8f8f8"
+__rg_code_border__ = "#cfcfcf"
+__rg_file__ = "#f3ffe3"
+__rg_file_border__ = "#e3ff9c"
+
+; the background and border for the search box
+__rg_search__ = "#f8f8f8"
+__rg_search_border__ = "#cfcfcf"
+
+; the background and border for the status box
+__rg_status_border__ = "#cfcfcf"
+__rg_status_background__ = "#e5e5e4"
+
+; the background and border for the actions box
+__rg_userbar__ = "#f8f8f8"
+__rg_userbar_border__ = "#cfcfcf"
+
+; the background for the sidebar box
+__rg_sidebar__ = "#e3ff9c"
+
+; the background and prelight (when you hover on the button) colors for buttons
+__rg_button_prelight__ = "#f3ffe3"
+__rg_button_background__ = "#e3ff9c"
+
+; images used for the user actions ( should be at most 24x24 pixels , otherwise edit the design.css)
+__rg_recent_action__ = "images/r/actions/recent.png"
+__rg_edit_action__ = "images/r/actions/edit.png"
+__rg_index_action__ = "images/r/actions/index.png"
+__rg_create_action__ = "images/r/actions/create.png"
+__rg_revision_action__ = "images/r/actions/history.png"
+__rg_backlink_action__ = "images/r/actions/backlink.png"
+__rg_login_action__ = "images/r/actions/login.png"
+__rg_subscribe_action__ = "images/r/actions/subscribe.png"
+__rg_unsubscribe_action__ = "images/r/actions/unsubscribe.png"
+__rg_profile_action__ = "images/r/actions/profile.png"
+__rg_admin_action__ = "images/r/actions/admin.png"
+__rg_show_action__ = "images/r/actions/show.png"
+__rg_previous_action__ = "images/r/actions/previous.png"
+__rg_top_action__ = "images/r/actions/top.png"
+__rg_digg_action__ = "images/r/actions/digg.gif"
+__rg_delicious_action__ = "images/r/actions/delicious.gif"
+__rg_google_action__ = "images/r/actions/google.gif"
+
+; the gradient used for the background panel (should have width 1 px )
+__rg_background_gradient__ = "images/r/gradient_background.png"
+
+; the gradient used for the breadcrumbs bar ( should have width 1px and height 17px )
+__rg_breadcrumbs_gradient__ = "images/r/gradient_bc.png"
+
+; the gradient for the logo bar ( should have width 1px and height 57px )
+__rg_logo_gradient__ = "images/r/gradient_logo.png"
+
+; the main wiki logo (upper left corner of the page) (should have height 57px )
+__rg_wiki_logo__ = "images/r/wiki_logo.png"
+
+; a faded version of the logo, which will be located on the lower right corner of the main content area (no size restrictions)
+__rg_faded_background__ = "images/r/faded_background.png"
+
+; the gradient for the status bar (should have width 1px and height 34px )
+__rg_status_gradient__ = "images/r/gradient_status.png"
+
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_plain.ini b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_plain.ini
new file mode 100644
index 00000000..48c461fe
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/style_plain.ini
@@ -0,0 +1,147 @@
+; Please see http://www.php.net/manual/en/function.parse-ini-file.php
+; for limitations of the ini format used here
+
+; Define the stylesheets your template uses here. The second value
+; defines for which output media the style should be loaded. Currently
+; print, screen and rtl are supported. rtl styles are loaded additionally
+; to screen styles if a right-to-left language is selected (eg. hebrew)
+[stylesheets]
+layout.css = screen
+design.css = screen
+style.css = screen
+
+media.css = screen
+
+rtl.css = rtl
+print.css = print
+
+; This section is used to configure some placeholder values used in
+; the stylesheets. Changing this file is the simplest method to
+; give your wiki a new look.
+[replacements]
+
+;--------------------------------------------------------------------------
+;------ guaranteed dokuwiki color placeholders that every plugin can use
+; main text and background colors
+__text__ = "#000"
+__background__ = "#fff"
+; alternative text and background colors
+__text_alt__ = "#638c9c"
+__background_alt__ = "#dee7ec"
+; neutral text and background colors
+__text_neu__ = "#666"
+__background_neu__ = "#f5f5f5"
+; border color
+__border__ = "#8cacbb"
+;--------------------------------------------------------------------------
+
+; other text and background colors
+__text_other__ = "#ccc"
+__background_other__ = "#f7f9fa"
+
+; these are used for links
+__extern__ = "#436976"
+__existing__ = "#090"
+__missing__ = "#f30"
+__visited__ = "#436976"
+__hover__ = "#436976"
+
+; highlighting search snippets
+__highlight__ = "#ff9"
+
+
+;--------------------------------------------------------------------------
+;------ for keeping old templates and plugins compatible to the old pattern
+; (to be deleted at the next or after next release)
+__white__ = "#fff"
+__lightgray__ = "#f5f5f5"
+__mediumgray__ = "#ccc"
+__darkgray__ = "#666"
+__black__ = "#000"
+
+; these are the shades of blue
+__lighter__ = "#f7f9fa"
+__light__ = "#eef3f8"
+__medium__ = "#dee7ec"
+__dark__ = "#8cacbb"
+__darker__ = "#638c9c"
+
+; additional info, used by the battlehorse template
+
+; background color for the website (the one outside the main content)
+__rg_background__ = "#fff"
+
+; the color used for the site title
+__rg_logo_color__ = "#436976"
+
+; the shadows used for the breadcrumbs bar and main content area
+__rg_bread_upper_dark__ = "#c4d5dd"
+__rg_bread_lower_dark__ = "#b4c9d3"
+__rg_bread_lower_medium__ = "#d5e0e6"
+__rg_bread_lower_light__ = "#f0f4f6"
+
+; the border for the breadcrumbs bar
+__rg_bread_border__ = "#cfcfcf"
+
+; the background and border for code and file snippets (see wiki:syntax)
+__rg_code__ = "#eef3f8"
+__rg_code_border__ = "#dee7ec"
+__rg_file__ = "#dee7ec"
+__rg_file_border__ = "#8cacbb"
+
+; the background and border for the search box
+__rg_search__ = "#f8f8f8"
+__rg_search_border__ = "#cfcfcf"
+
+; the background and border for the status box
+__rg_status_border__ = "#8cacbb"
+__rg_status_background__ = "#dee7ec"
+
+; the background and border for the actions box
+__rg_userbar__ = "#f0f4f6"
+__rg_userbar_border__ = "#8cacbb"
+
+; the background for the sidebar box
+__rg_sidebar__ = "#dee7ec"
+
+; the background and prelight (when you hover on the button) colors for buttons
+__rg_button_prelight__ = "#dee7ec"
+__rg_button_background__ = "#fff"
+
+; images used for the user actions ( should be at most 24x24 pixels , otherwise edit the design.css)
+__rg_recent_action__ = "images/p/actions/recent.png"
+__rg_edit_action__ = "images/p/actions/edit.png"
+__rg_index_action__ = "images/p/actions/index.png"
+__rg_create_action__ = "images/p/actions/create.png"
+__rg_revision_action__ = "images/p/actions/history.png"
+__rg_backlink_action__ = "images/p/actions/backlink.png"
+__rg_login_action__ = "images/p/actions/login.png"
+__rg_subscribe_action__ = "images/p/actions/subscribe.png"
+__rg_unsubscribe_action__ = "images/p/actions/unsubscribe.png"
+__rg_profile_action__ = "images/p/actions/profile.png"
+__rg_admin_action__ = "images/p/actions/admin.png"
+__rg_show_action__ = "images/p/actions/show.png"
+__rg_previous_action__ = "images/p/actions/previous.png"
+__rg_top_action__ = "images/p/actions/top.png"
+__rg_digg_action__ = "images/p/actions/digg.gif"
+__rg_delicious_action__ = "images/p/actions/delicious.gif"
+__rg_google_action__ = "images/p/actions/google.gif"
+
+; the gradient used for the background panel (should have width 1 px )
+__rg_background_gradient__ = "images/p/gradient_background.png"
+
+; the gradient used for the breadcrumbs bar ( should have width 1px and height 17px )
+__rg_breadcrumbs_gradient__ = "images/p/gradient_bc.png"
+
+; the gradient for the logo bar ( should have width 1px and height 57px )
+__rg_logo_gradient__ = "images/p/gradient_logo.png"
+
+; the main wiki logo (upper left corner of the page) (should have height 57px )
+__rg_wiki_logo__ = "images/p/wiki_logo.png"
+
+; a faded version of the logo, which will be located on the lower right corner of the main content area (no size restrictions)
+__rg_faded_background__ = "images/p/faded_background.png"
+
+; the gradient for the status bar (should have width 1px and height 34px )
+__rg_status_gradient__ = "images/p/gradient_status.png"
+
diff --git a/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/tplfn_sidebar.php b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/tplfn_sidebar.php
new file mode 100644
index 00000000..624f9340
--- /dev/null
+++ b/mayor-orig/mayor-wiki/wiki/lib/tpl/mayor/tplfn_sidebar.php
@@ -0,0 +1,97 @@
+<?php
+/*
+ * Provide navigation sidebar functionality to Dokuwiki Templates
+ *
+ * This is not currently part of the official Dokuwiki release
+ *
+ * @link http://wiki.jalakai.co.uk/dokuwiki/doku.php?id=tutorials:dev:navigation_sidebar
+ * @author Christopher Smith <chris@jalakai.co.uk>
+ */
+
+// sidebar configuration settings
+$conf['sidebar']['enable'] = 1; // 1 or true to enable sidebar functionality, 0 or false to disable it
+$conf['sidebar']['page'] = tpl_getConf('btl_sidebar_name'); // name of sidebar page
+$conf['sidebar']['layout'] = 'inside'; // inside (between button bars) or outside (full height of dokuwiki)
+$conf['sidebar']['orientation'] = 'right'; // left or right
+
+// determine the sidebar class
+$sidebar_class = "sidebar_{$conf['sidebar']['layout']}_{$conf['sidebar']['orientation']}";
+
+// recursive function to establish best sidebar file to be used
+function getSidebarFN($ns, $file) {
+
+ // check for wiki page = $ns:$file (or $file where no namespace)
+ $nsFile = ($ns) ? "$ns:$file" : $file;
+ if (file_exists(wikiFN($nsFile)) && auth_quickaclcheck($nsFile)) return $nsFile;
+
+// remove deepest namespace level and call function recursively
+
+ // no namespace left, exit with no file found
+ if (!$ns) return '';
+
+ $i = strrpos($ns, ":");
+ $ns = ($i) ? substr($ns, 0, $i) : false;
+ return getSidebarFN($ns, $file);
+}
+
+// display the sidebar
+function tpl_sidebar() {
+ global $ID, $REV, $conf;
+
+ // save globals
+ $saveID = $ID;
+ $saveREV = $REV;
+
+ // discover file to be displayed in navigation sidebar
+ $fileSidebar = '';
+
+ if (isset($conf['sidebar']['page'])) {
+ $fileSidebar = getSidebarFN(getNS($ID), $conf['sidebar']['page']);
+ }
+
+ // determine what to display
+ if ($fileSidebar) {
+ $ID = $fileSidebar;
+ $REV = '';
+ print p_wiki_xhtml($ID,$REV,false);
+ }
+ else {
+ global $IDX;
+ html_index($IDX);
+ }
+
+ // restore globals
+ $ID = $saveID;
+ $REV = $saveREV;
+}
+
+if (!function_exists('tpl_pagename')) {
+
+ require_once(DOKU_INC.'inc/parserutils.php');
+
+ /**
+ * Returns the name of the given page (current one if none given).
+ *
+ * If useheading is enabled this will use the first headline else
+ * the given ID is printed.
+ *
+ * based on tpl_pagetitle in inc/template.php
+ */
+ function tpl_pagename($id=null){
+ global $conf;
+ if(is_null($id)){
+ global $ID;
+ $id = $ID;
+ }
+
+ $name = $id;
+ if ($conf['useheading']) {
+ $title = p_get_first_heading($id);
+ if ($title) $name = $title;
+ }
+ return hsc($name);
+ }
+
+}
+
+?>