PDA

Zobacz pełną wersję : Jak uniemożliwić autorom edytowanie własnych artykułów?



pawinf
19-01-2011, 22:53
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?

Bazyl
19-01-2011, 23:46
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:

Bazyl
20-01-2011, 00:07
Jolu, proszę, nie czytaj mojego postu wyżej :)

Jola
20-01-2011, 05:30
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ż. :)

pawinf
20-01-2011, 15:09
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?

koroner
20-01-2011, 18:23
A nie łatwiej w uprawnieniach użytownika dać mu najniższy poziom?

Bazyl
20-01-2011, 18:36
@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)

koroner
20-01-2011, 18:38
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.

pawinf
24-01-2011, 21:10
@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!

pawinf
24-01-2011, 21:36
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

Jola
24-01-2011, 22:11
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.

pawinf
25-01-2011, 18:22
@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...

Jola
25-01-2011, 20:38
@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.

pawinf
02-02-2011, 14:56
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...

Jola
02-02-2011, 18:33
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) : ?>

pawinf
03-02-2011, 13:13
hmm... wydaje się, że działa. @jolaass - przesyłam ci kwiaty :-)

http://www.bip.gminy.com.pl/bejsce/pic/kwiaty2.jpg

pawinf
16-02-2011, 15:14
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"

Jola
16-02-2011, 20:28
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

pawinf
17-02-2011, 13:50
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>

Jola
17-02-2011, 19:10
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.

pawinf
18-02-2011, 14:46
Aha, czyli trzeba przekopiować go do szablonu i dopiero tam wprowadzić zmianę...

docxxx
20-02-2011, 18:19
Koledzy, sam mialem podobny problem i znalazlem to:
http://www.cmsmarket.com/extensions-directory/security+and+acl/content+restriction/limit+article+edit

pawinf
20-02-2011, 21:53
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

docxxx
20-02-2011, 22:49
No, zawsze mozna cos naknocic w kodzie ;)
Wiadomo, co kto lubi.