Postupy Joomla II. - hacky kódu apod. - vložení článků - automatické schválení bez kontroly administrátora

Datum 10. 12. 2010 10:40:00 | Rubrika: Licence


Joomla - vkládání článků

1)Vložení článků uživatele s úrovní AUTOR, příp. vyšší.

Aby mohli uživatelé vkládat články je nutno, aby byly na úrovni AUTOR místo REGISTROVANÍ. To se docílí buď ručním přiřazením v administraci ke konkrétnímu registrovanému nicku, nebo defaultně pro všechny nově registrované tím, že v administraci - globální nastavení - systém zvolíte: Typ registrace nového uživatele - Autor, nikoliv jen registrovaný.

2)Autopublikování bez nutnosti schválení administrátorem:
nutná úprava kódu + podmínka bodu 1, tedy registrovat nebo být přidělen jako Autor.
Pozor: pro testování je nutno se někdy odhlásit a přihlásit

najdi soubor: /libraries/joomla/user/authorization.php
řádek cca.: 200 a přidej pro každý typ uživatele potřebný řádek, pro autora tedy:

$this->addACL( 'com_content', 'publish', 'users', 'author', 'content', 'all' );//own nefunguje


Zatím to s tímto funguje, komplikace jsem nezaznamenal, ale netvrdím, že nebudou. V podstatě se autorovi přiřadila stejná práva jako publisher. S těmito právy by teoreticky mohl publikovat všechny i cizí články, ale zase jak, když se nedostane do administrace? nevím přesně jak to funguje, takže zatím testuji.

-------------
Skrýt některá pole ve formuláři pro vložení článku, tak, aby byla funkční - s výchozí volbou.

Šablona formu
templates/vase_sablona/html/com_content/article/form.php

Do patřičného divu stačí vložit

style="display: none"
např. takto:

<!-- pridano style="display: none"-->
<div style="display: none" class="radio">
<label for="frontpage">
<span><?php echo JText::_( 'Show on Front Page' ); ?>:</span>
</label>

<?php echo $this->lists['frontpage']; ?>
</div>


Pozor: je to jen skrytí, teoreticky si uživatel může povypínat styly a zobrazí se mu to, ale pro běžné použití, aby to uživatele nemátlo to stačí.

Je také možné přesunout submit buttony na konec formu, tak jak to obvykle bývá u formulářů. Horní umístění je sice vidět, ale hodně uživatelů to přehlédne a zbytečně zmate.
----------------------------

Sobi2 - úprava dle mého názoru nešťastně řešeného vypisování dat z roletového select inputu.

Běžně ve výchozích uživatelsky definovaných položkách se nachází typ pole select listm resp. roletové výběrové menu.
Zadávají se do něj mimo běžných parametrů proměnné: value a name. Už toto mi připadne, že je obráceno.

Popis:
Název volby - pozor ve skutečnosti je to to, co se odesilá do databáze tzn. value, ovšem ne to co se pak zobrazuje jako hodnota např. v detailu. To se opět použije nelogicky to co se zobrazí v roletě, což znemožňuje jakékoliv formátování textu v roletě.
Hodnota volby - pozor ve skutečnosti je to to, co se zobrazuje v roletě, ale současně i to co se zobrazuje v detailu.


Další problém vzniká, pokud si v detailu chcete vytáhnout to co se opravdu ukládá k položce (odkazu). Buď se spokojíte s tím, že obě hodnoty vyplníte stejně a pak Vám to leze ven OK, ovšem pokud chcete v roletovém menu použít nějaké formátování, tak pak Vám to leze i s tímto formátováním a to pak může vypadat hrozně.

Pozn.: možná to má nějaký důvod, např. při změně hodnot se to pak změní ve všech odkazech, ale osobně dám přednost tomu, že u každé položky - odkazu bude přesně to co si tam konkrétní inzerent vložil a ikdyž v budoucnu změním proměnné a hodnoty, tak tam bude mít to co si tam uložil on.

Proto jsem provedl malou úpravu v souboru: components/com_sobi2/field.class.php


a to zhruba na řádku 336.

 
//testování typu pole
if($this->fieldType == 5) { $this->sortValues = $this->wysiwyg; $this->selectLabel = $this->fieldChars; $this->wysiwyg = null; $this->fieldChars = null; $this->selected = $this->data;

//zacatek upravy if($this->fieldname!="field_region")
//pokud nechcete upravu jen na konkretni pole, odstraňte if
podmínku, v opačném případě místo field_region zadejte název
svého konkrétního pole

{ $this->data = isset($this->definedValues[$this->data]) ? $this->definedValues[$this->data] : null; } else{ //pouzije se vychozi $this->data, ktere je nekde nahore jiz prirazeno }

//pridano opraveno - zakomentovano z duvodu, ze se v datech z rolety misto value zobrazovalo to co je v popisu rolety }


POZOR: jen na vlastní nebezpečí pro ty co chtějí experimentovat.
Možné problémy: netestováno na hledání v tomto poli. Možná nechtěná neznámá nekompatibilita v nějakých dalších modulech.
Prosím hlaste chyby na info@a-pool.cz díky.



Tento článek je z ZenCart
http://www.zencart.cz

URL tohoto článku je:
http://www.zencart.cz/modules/news/article.php?storyid=82