Web fora -------- 1.0 Obecne ---------- Fora se skladaji z 'topicu'. Topici tvori stromovou strukturu. Kazdy topic obsahuje posty. Posty se zdruzuji do threadu a tvori stromovou strukturu. Thread zacina postem v roootu. Kazdy post muze obsahovat zadnou a vice priloh. V CBS se edituji jen zakladni nastaveni fora - globalni. Dale je mozno posty aprovovat - ale to je vse. V ramci CBS nejde posty pridavat, editovat a podobne. Pristup na fora se ridi prez 'roly' uzivatele - ta urcije jesli neco muze, zda muze vytvaret a podobne. Aproving se ridi prez aprove pravo - zde se urcuje co uzivatel muze aprovnout. Pokud je post/topic aprovovany, tak po zadani ho vidi jen 'uzivatel' co ho zadal (se znackou waiting) a vsihni co maji pravo aprovovat danou vec. Nikdo jiny post nevidi. Nicmene, pro ty co ho vidi je jiz v tento okamzik plne funkcni. Pokud se nekdo kdo ma aprove rpava podiva na vypis, vidi, zda-li ne nejaky post/topic potreba aprovovat. Muze tak take uciniti. WWW cast resi kompletni nastaveni fora. ACL se prideluji aktualni forum jako celku, ale neni problem je rozmelnit az na jetnotlive topicy. Posty i topici lze smazavat. Pokud je smazano, potom prispevek vidi jen uzivatel jez ho zadal - a vidi u nej duvod smazani. Nikdo jiny uz topic/psot nevidi. Post je mozno smazat definitivne (nikdo nic nevidi) pripadne jen poeditovat a misto textu napsat jemne upozorneni ve stylu "ty kretene, kdyz uz si musis vylejvat zlost a nadavat na jiny, cin tak slusne ! Kdyz si budes 3x dene omybvat koule studenou vodou, nebudes trpet tak velkou agresivitou. Mysli, nebo ti brzo nekdo rozbije drzku, ty debile" a pdobone vychovne texty. Fora si pamatuji 'prectene' prispevky i topicy. Je teedy vodet co je nove a co neni. Fora neresi 'profil' - otazka profilu je tedy soucast celkoveho CBS uzivatele (a je zdilena). Fora pouzivaji systemove uzivatele. Fora samy o sobe vubec neurciju co ma topic/prispevek/... osahovat (dokonce ani 'body' nebo 'titulek'). Vse se resi prez DTD a je mozno vytvaret ruznoroda fora pro ruzne ucely - nejen tlachaci. Moderovane/approve znamena, ze po zadani uzivatelem XY musi prijit nekdo s pravama na aprove a dany post/topic odsouhlasit v uverejneni. 1.1 ACL ------- ACL tvori 2 zakladni prava: forums@role - to ma nasledujici urovne: deny dovoleno prd view_anonymous pravo na view, nepocitaji se 'statistiky' ala readed (zdilena konta) view pravo na view view_rank pravo na view a hodnoceni create_posts moznost vytvareni postu create_posts_att moznost pozuviani priloh u postu create_topics moznost vytvareni topicu (nastaveni se dedi po parentu) moderator moderator - edituje nastaveni topicu + vsechno dalsi forums@approve - ridi aproving: deny delete_posts mazani postu delete_topics mazani topicu approve_posts aproving postu approve_post_att aproving priloh u postu approve_topics aproving celich topicu 1.2 nastaveni ------------- Forum (jako celek) ma nasledujici nastaveni: maxfilesize - maximalni veliksot prilohy mime - povolene a zakazane mime typy, zakazane maji vetsi prioritu. Syntaxe mime je std, tedy typ/subtyp - napr. image/gif application/exe a pod. je mozno pozuivat * jako zastupny znak, napr. image/* quick* - simple templata pro zobrazeni prispevku v ramci cbs (pro aproving) - umi POUZE {column_z_table} mody - ridici mody moderated_topics - topici jsou moderovane moderated_posts - posty moderovane moderated_posts_att - prilohy moderovane enable_uploads - povoleni uploadu enable_self_approving - povoleni 'podepsani' sebou sama enable_notifies - povoleni zasialni emailu pro nove prispevky/.... Topic pak ma nasledujici mody (ovlinvuji topic a jeho prime childy): moderated_topics - topici jsou moderovane moderated_posts - posty moderovane moderated_posts_att - prilohy moderovane disable_uploads - vypne uploady disable_posting - vypne postovani (topic je jen 'folder') disable_notifies - vypne notify posts_only_moderators - postovat muze jen ten kdo je 'moderator' 1.3 tech -------- Fora maji sve zakladni dtd, ktere je mozno (a u musi) se upravit. Nektera fora budou mit napriklad 'body' jako text, jine jako language. Nektera fora muzou mit caption, jine vice a pdoobne. Fora sama o sobe nic takvoeho nedefinuji. Doporucji pozuivat nejaky prefix - aby do budoucna nahodou neco v DTD nekolidovalo. Doporucju udelat jednu 'administracni' cast for - a pak fora na koncovych strankach drzet tak nejjednodusi jak to pujde. Vhodne bude pouziti funknci/maker ci jinych veci. TPL nijak neresi logiku vnitrni, jen obrazovou. Me super-duper testovaci forum pridalo zakladni veci, jako je body, caption, name - viz DTD (ray_forum). Forum pracuje ve spolurpaci s data sourcema, jejichz chovani urpavuje na presny vyber a srovnani (strom), ale jeho funkcni JINAK neomezuje (takze se snadno bude rozpoznavat profil, ...) Veskere fce si sami estuji jesli jsou volany vhodne a pokud ne generuji chybu nebo warning (podle typu) forum do TPL vstupuje jako WWW library forum. Oznaceni parametru u funkcni: ff - alias fora id_xx - id 'xx' (postu, topicu, ...) forum.topicsPrepareDataSrc ff data_source_alias vezme data source a provede jeho 'prepare' pro vsechny topicy, setridi radky tak jak ma a doplni 'systemove' sloupce. Data source by mel mit 'no auto' autoprepare forum.postsPrepareDataSrc ff data_source_alias id_topic obdobne jako topics - ale funguje pro posty forum.errGetText ff vraci chybovy text fora (prazdny retezec -> OK) forum.errSuccess ff vraci 0 nebo 1 podle toho jesli anstala chyba forum.create ff id_data vytvore objejt 'forum' ff aliasu nad prislusnymy daty forum.createTopic ff param_table vytvori 'topic', parametru jsou ulozeny v tabulce (jedna radka, vice sloupcu) forum.createPost ff param_table vytvori 'post' v nejakem topicu, parametry stejne jako createTopic forum.modifyTopic ff param_table id_topicu modifikuje nastaveni topicu forum.role ff role vraci 1 v pripade, ze uzivatel splnuje MINIMALNE danou 'roli' jinak vraci 0 role je alias (viz 1.1) !!! tento prikaz vraci roli uzivatele ve foru - jeho role se muze lisit topic od topicu - nezamenovat forum.approve ff approve vraci 1 v pripade, ze uzivatel splnuje MINIMALNE dany 'aprove' level jinak vraci 0 approve je alias (viz 1.1) !!! tento prikaz vraci approving uzivatele ve foru - jeho approve se muze lisit topic od topicu - nezamenovat forum.include ff inc inc2 inc3... nastavy 'includovani' veci do vystupu. Tvar muze byt +inc (implicitni) nebo -inc (vynechani) mozne inc: stats - pocitej statistiky (a vracej) rank - -//- ale 'rank' obe zatezuji DB takze pokud si je neprejete ukazovat, tak neincludovat. Defaultne se neincluduje nic forum.doApprove ff co id aprovuje post/prilohy/topic (parametr je alias: post, post_att,topic). id je pak ID toho co se aprovuje. Systemove sloupce pro 'topicy' - ne vsechny maji vyznam pro pozuiti - ale proste v tabulce jsou. Sloupce se vztahuji vzdy na patricny 'topic', ale muzou reflektovat i globalni nastaveni. Napriklad - state_can_approve neni hodnota 'acl', ale u konkretnho fora je zohledneno: ACL, fakt jesli topic je jiz aprovovan, jesli si user aprovuje sam svuj post etc etc. DTD cast approved_by - user id (0 - neaprovovano) created_by - user id created_time - ISO datum id - ID parent - parent noda (0 = root) topics_modes - mody (ciselne) Tree navigace Tchilds - pritomny childy Ticons - 'vyrendrovana' cast stromu (cary) - stejne jako v CBS Tdepth - tabulka, co radek to 'jedna uroven stromu' Statusove state_can_subtopic - uzivatel muze vytvorit subtopic state_is_moderator - uzivatel je moderator state_moderated - topic je moderovan state_can_approve - uzivatel muze aprovovat state_owner_unapproved - user je owner a topic je neaprovovan state_can_post - muze se pridat post Statistika (pokud je zapla) posts_cnt - pocet postu post_lasttime - posledni postovaci datum (nejnovejsi) posts_readed - prectenych postu posts_unreaded - neprectenych postu Misc posts_unapproved - pocet neaprovovanych postu (jen pokud user muze aprovovat) Systemove sloupce pro 'posty' DTD cast approved_by - user id (0 - neaprovovano) posted_by - user id posted_time - ISO datum id - ID reply_to - odpoved na post (0 - root post) Tree navigace Tchilds - pritomny childy Ticons - 'vyrendrovana' cast stromu (cary) - stejne jako v CBS Tdepth - tabulka, co radek to 'jedna uroven stromu' Statusove state_can_upload - user muze uplaodnout prilohu state_moderated - topic je moderovan state_can_approve - uzivatel muze aprovovat state_owner_unapproved - user je owner a topic je neaprovovan Dostupne vlasnosti pro topic user_XXX - user sloupec 'XXX' (user_ se odeli !!) parent - rodicovsky topic (0 nebo chybejici znamena root) mime_allowed - carkama odeleni seznam MIME mime_disabled modes - carkama odeleny seznam modu (aliasy) - pokud pri insertu schazi deni se po parentu Sakra, zatim to musi stacit, mam toho plny zuby.... Chtelo by to sekletarku, peknou brunetku/zrzku :)