Zobacz pełną wersję : Jak uniemożliwić autorom edytowanie własnych artykułów?
Opis problemu: Nie wiem czy dobrze rozumuję, ale dostrzegam pewien błąd w J! Otóż bezpośrednio po dodaniu nowego artykułu pojawia się przed autorem komunikat, że zanim artykuł będzie opublikowany zostanie sprawdzony przez administratora. Ale do edytowania tego artykułu - gdy już zostanie opublikowany na stronie - ma autor już nieograniczoną możliwość.
A zatem jeśli podczas przygotowywania treści artykułu autor chce oszukać administratora (np. ominąć jakieś warunki przedstawione w regulaminie), może to zrobić dwuetapowo:
przygotować treść "przełykalną" dla moderatora
potem w sposób niezauważony dowolnie wyedytować treść
Pytanie: Czy rozumuję poprawnie? Jak usunąć tę lukę? Wydaje mi się, że można to zrobić tak - uniemożliwić autorom edytowanie własnych artykułów. Ale jak tego można dokonać? Jest jakieś łatwe ustawienie w Zapleczu?
Witam,
Możesz np. użyć WD Submit: piszący nie będzie zalogowany, więc nie da rady edytować artykułu.
Jak znam życie Jola się odezwie i poda rozwiązanie... :)
Gall Anonim
20-01-2011, 00:01
Witam,
Możesz np. użyć WD Submit: piszący nie będzie zalogowany, więc nie da rady edytować artykułu.
Jak znam życie Jola się odezwie i poda rozwiązanie... :)
@bazyl - zapewne Masz rację - tyle że Jola znowu będzie się czuła wywołana do tablicy :spoko:
Jolu, proszę, nie czytaj mojego postu wyżej :)
Witam,
@Gall Anonim - czasami lubię być wywoływana do tablicy :).
Sprawa jest dosyć prosta. Należy autorowi zabrać przywilej edycji jego już opublikowanych artykułów.
Modyfikację należy wykonać w czterech plikach. Ja podam ścieżki do komponentu, lecz jeśli szablon korzysta z opcji nadpisywania szablonem, modyfikacji należy dokonać w analogicznych plikach w katalogu html szablonu. Tak czy owak zmiany należy zapisać za pomocą metody nadpisywania szablonem.
W każdym z czterech przypadków należy zmodyfikować taką część kodu (w każdym z podanych poniżej plików linia ok. 4):
$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own'));W pliku: components/com_content/views/article/tmpl/default.php zamienic na:
$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || ($this->user->authorize('com_content', 'edit', 'content', 'own') && !$this->article->state ));W plikach: components/com_content/views/category/tmpl/blog_item,php, components/com_content/views/frontpage/tmpl/default_item.php i components/com_content/views/section/tmpl/blog_item.php zamienić na:
$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || ($this->user->authorize('com_content', 'edit', 'content', 'own') && !$this->item->state));
I już. :)
uff, wygląda profesjonalnie... jeszcze nie "grzebałem" w plikach. w takim razie jeszcze jedno pytanko - gdzie mogę znaleźć jakiś fajny opis "nadpisywania szablonów", by się dokładniej dowiedzieć o co chodzi?
A nie łatwiej w uprawnieniach użytownika dać mu najniższy poziom?
@koroner - prawa uzytkowników (http://www.wiki.joomla.pl/index.php/Prawa_u%C5%BCytkownik%C3%B3w_Joomla%21)
@pawinf - nadpisywanie szablonem (http://wiki.joomla.pl/index.php/Zrozumie%C4%87_koncepcj%C4%99_nadpisywania_szablon em)
Tak przerpaszam z aomyłke prawa użytkowników. O to chyba chodziło. Użytkownik może wtedy pisać artykuły lecz nie ma uprawnień do ich edycji.
@jolaass
Modyfikację należy wykonać w czterech plikach. Ja podam ścieżki do komponentu, lecz jeśli szablon korzysta z opcji nadpisywania szablonem, modyfikacji należy dokonać w analogicznych plikach w katalogu html szablonu
A nie można dokonać tych zmian w komponentach, czyli zgodnie ze ścieżkami, jakie podałaś? Nie będzie wtedy efektu?
zwiastun
24-01-2011, 21:11
Będzie. Do czasu uaktualnienia Joomla!
i jeszcze dodam to:
Czytam na temat metody nadpisywania szablonem. Czy dobrze rozumiem?:
Pliki szablonu działają na tej zasadzie, że nadpisują standardowe ustawienia, zgromadzone w folderze components
Nadpisywanie szablonu to edytowanie ustawień i wpisów w plikach szablonu (zgodnie z wcześniejszymi wyjaśnieniami jolaass)
Tak?
---------- Post dodany o 21:36 ---------- Poprzedni post był o 21:34 ----------
@zwiastun
tylko, że ja właśnie dokonałem tych zmian w folderze components (a nie w plikach szablonu) i nie widzę żadnych efektów. mam Joomla! 1.5.22 Stable
Pliki w folderze html szablonu "nadpisują" adekwatne pliki komponentu (jeśli istnieją).
Jeśli nie ma odpowiedników - należy je skopiować z komponentu i wstawić z odpowiednią ścieżką (podaną na Wiki).
Wtedy można robić na nich modyfikacje i jest ona odporna na aktualizacja Joomla do wyższych wersji.
Jeśli nie widzisz zmian po modyfikacji plików komponentu jest podejrzenie, że masz odpowiedniki w html szablonu, gdzie brak modyfikacji.
@jolaass - oo... dzięki wielkie, to mi sprawę sporo rozjaśnia
Jeśli nie ma odpowiedników - należy je skopiować z komponentu i wstawić z odpowiednią ścieżką (podaną na Wiki).
"odpowiednią ścieżką"
a więc nie można po prostu skopiować analogicznej struktury folderów z katalogu components? trzeba taką ścieżkę skrócić?
jeśli tak, to co decyduje o wyglądzie ścieżki?
i jak szukać takiego odpowiedniego wyglądu ścieżki na Wiki?
sory, że tak męczę temat, ale jak już pytam to chciałbym dobrze to zrozumieć. Dzięki wielkie z góry za info!
---------- Post dodany o 18:22 ---------- Poprzedni post był o 17:55 ----------
ciekaw jestem, czy w J!1.6 pojawi się możliwość łatwego edytowania uprawnień danych grup użytkowników...
@bazyl podał Ci namiar na materiał na Wiki dotyczący nadpisywania szablonem. Tam masz podana strukturę.
Najwygodniej jednak podpatrzeć w działaniu - zajrzyj do standardowego szablonu beez to jest dobry i wyczerpujący przykład struktury plików w katalogu html.
Witam ponownie, powracam do tematu.
Przeczytałem na temat nadpisywania szablonów to (http://wiki.joomla.pl/index.php/Zrozumie%C4%87_koncepcj%C4%99_nadpisywania_szablon em), to (http://wiki.joomla.pl/index.php/Beez/Przes%C5%82anianie_standardowych_szablon%C3%B3w) i to (http://wiki.joomla.pl/index.php/Jak_nadpisywa%C4%87_szablony_standardowych_uk%C5%8 2ad%C3%B3w). Niemniej nie zmienia to faktu, że nie jestem programistą, a moje próby edycji szybciej coś zepsują niż stworzą... Tak więc w przypadku konkretnych modyfikacji i tak polegam na użytkownikach forum.
Chciałbym więc zapytać Was, jakie konkretnie modyfikacje należy wprowadzić w plikach szablonu JA_Purity, aby uzyskać efekt o którym jest mowa od początku tego tematu. Analogiczne pliki z components i html wydają się całkowicie różne (w tym drugim nie ma linijki "$canEdit"), więc nie wiem jakich konkretnie modyfikacji wymaga szablon...
@jolaass - pliss...
W szablonie JA_Purity jest mała różnica
w templates/ja_purity/html/com_content/article/default.php linia 6 jest
<?php if (($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own')) && !$this->print) : ?>zmienić na:
<?php if (($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own') && !$this->article->state) && !$this->print) : ?>w plikach templates/ja_purity/html/com_content/frontpage/default_item.php, templates/ja_purity/html/com_content/category/blog_item.php, templates/ja_purity/html/com_content/section/blog_item.php linia ok. 4 jest
<?php if ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own')) : ?>zmienić na:
<?php if ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own') && !$this->item->state) : ?>
hmm... wydaje się, że działa. @jolaass - przesyłam ci kwiaty :-)
http://www.bip.gminy.com.pl/bejsce/pic/kwiaty2.jpg
Jest mały problem po prowadzeniu powyższych modyfikacji. Użytkownik się zalogował. Ogólnie rzeczywiście nie może edytować raz napisanego i wysłanego artykułu. Ale może to zrobić, jeśli artykuł jest wyświetlany jako "Lista - Artykuły w kategorii"
No tak, uchowała się ta jedna opcja.
Plik components/com_content/views/category/tmpl/default_items.php linia ok. 74 jest:
<td>
<a href="<?php echo $item->link; ?>">
<?php echo $this->escape($item->title); ?></a>
<?php $this->item = $item; echo JHTML::_('icon.edit', $item, $this->params, $this->access) ?>
</td>zamienić na:
<td>
<a href="<?php echo $item->link; ?>">
<?php echo $this->escape($item->title); ?></a>
<?php $this->item = $item;
if($this->user->authorize('com_content', 'edit', 'content', 'all') || ($this->user->authorize('com_content', 'edit', 'content', 'own') && !$item->state)){
echo JHTML::_('icon.edit', $item, $this->params, $this->access);
} ?>
</td>Zapisać za pomoca nadpisywania szablonów w templates/twoj_szablon/html/com_content/category/default_items.php
tak jak wcześniej chodzi o modyfikacje w szablonie ja_purity. Tylko nie ma w odpowiednim miejscu pliku default_items.php tylko blog_item.php czyli jest ścieżka templates\ja_purity\html\com_content\category\blog _item.php i w tym pliku nie ma takiego kodu
<td>
<a href="<?php echo $item->link; ?>">
<?php echo $this->escape($item->title); ?></a>
<?php $this->item = $item; echo JHTML::_('icon.edit', $item, $this->params, $this->access) ?>
</td>
Wiem, że chodzi o ten szablon,
wiem, że w katalogu html nie ma tego pliku,
dlatego napisałam to, co napisałam - czytaj uważnie.
Aha, czyli trzeba przekopiować go do szablonu i dopiero tam wprowadzić zmianę...
Koledzy, sam mialem podobny problem i znalazlem to:
http://www.cmsmarket.com/extensions-directory/security+and+acl/content+restriction/limit+article+edit
No niby tak, ale fajnie jest moim zdaniem uniknąć instalowania kolejnych dodatków - ze względów bezpieczeństwa. A w sumie kilka zmian w kodzie i efekt jest extra
No, zawsze mozna cos naknocic w kodzie ;)
Wiadomo, co kto lubi.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!